智能系統(tǒng)技術(shù)叢書 生成對(duì)抗網(wǎng)絡(luò)入門指南》—2.3.2Keras使用入門

      網(wǎng)友投稿 947 2022-05-29

      2.3.2 Keras使用入門

      Keras包含兩種模型類型,第一種是序列模型,第二種是函數(shù)式模型。其中后者屬于Keras的進(jìn)階型模型結(jié)構(gòu),適用于多入多出、有向無環(huán)圖或具備共享層的模型,具體可參看Keras官方文檔。本小節(jié)中主要以序列模型為例來帶領(lǐng)讀者學(xué)習(xí)Keras的使用方法。

      所謂序列模型是指多個(gè)網(wǎng)絡(luò)層線性堆疊的模型,結(jié)構(gòu)如下列代碼所示。該序列模型包含了一個(gè)784×32的全連接層、ReLU激活函數(shù)、32×10的全連接層以及softmax激活函數(shù)。

      from keras.models import Sequential

      from keras.layers import Dense, Activation

      model = Sequential([

      Dense(32, input_shape=(784,)),

      Activation('relu'),

      Dense(10),

      Activation('softmax'),

      ])

      也可以使用add()方法進(jìn)行序列模型中網(wǎng)絡(luò)層的添加。

      model = Sequential()

      model.add(Dense(32, input_dim=784))

      model.add(Activation('relu'))

      下面我們來看一個(gè)Keras實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)二分類示例,其網(wǎng)絡(luò)結(jié)構(gòu)非常簡(jiǎn)單,由兩個(gè)全連接層構(gòu)成。示例中包含了網(wǎng)絡(luò)模型的搭建、模型的編譯以及訓(xùn)練,讀者可以在自己的設(shè)備上嘗試運(yùn)行此代碼以熟悉Keras的使用。

      import numpy as np

      from keras.models import Sequential

      from keras.layers import Dense

      data = np.random.random((1000,100))

      labels = np.random.randint(2,size=(1000,1))

      model = Sequential()

      model.add(Dense(32, activation='relu', input_dim=100))

      《智能系統(tǒng)與技術(shù)叢書 生成對(duì)抗網(wǎng)絡(luò)入門指南》—2.3.2Keras使用入門

      model.add(Dense(1, activation='sigmoid'))

      model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])

      model.fit(data,labels,epochs=10,batch_size=32)

      predictions = model.predict(data)

      下面我們來嘗試搭建一些序列模型。首先使用序列模型來搭建卷積神經(jīng)網(wǎng)絡(luò)(CNN),代碼如下。

      from keras.models import Sequential

      from keras.layers import Activation,Conv2D,MaxPooling2D,Flatten

      model = Sequential()

      model.add(Conv2D(32,(3,3),padding='same',input_shape=x_train.shape[1:]))

      model.add(Activation('relu'))

      model.add(Conv2D(32,(3,3)))

      model.add(Activation('relu'))

      model.add(MaxPooling2D(pool_size=(2,2)))

      model.add(Dropout(0.25))

      model.add(Conv2D(64,(3,3), padding='same'))

      model.add(Activation('relu'))

      model.add(Conv2D(64,(3, 3)))

      model.add(Activation('relu'))

      model.add(MaxPooling2D(pool_size=(2,2)))

      model.add(Dropout(0.25))

      model.add(Flatten())

      model.add(Dense(512))

      model.add(Activation('relu'))

      model.add(Dropout(0.5))

      model.add(Dense(num_classes))

      model.add(Activation('softmax'))

      同樣,也可以使用Keras的序列模型實(shí)現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),代碼如下。

      from keras.models import Sequential

      from keras.klayers import Dense,Embedding,LSTM

      model = Sequential()

      model.add(Embedding(20000,128))

      model.add(LSTM(128,dropout=0.2,recurrent_dropout=0.2))

      model.add(Dense(1,activation='sigmoid'))

      可以發(fā)現(xiàn)使用Keras來實(shí)現(xiàn)那些復(fù)雜的深度學(xué)習(xí)網(wǎng)絡(luò)其實(shí)是一件非常簡(jiǎn)單的事情,在模型搭建完畢后可以設(shè)置模型的編譯,下面分別是CNN與RNN的編譯。

      CNN模型的優(yōu)化與編譯:

      from keras.optimizers import RMSprop

      opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)

      model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])

      RNN模型的編譯:

      model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

      在完成模型的編譯后就可以對(duì)模型進(jìn)行訓(xùn)練了,這里的代碼是對(duì)RNN模型進(jìn)行訓(xùn)練與評(píng)估。

      model.fit(x_train, y_train, batch_size=32, epochs=15, verbose=1, validation_

      data=(x_test,y_test))

      score = model.evaluate(x_test, y_test, batch_size=32)

      最終可以將模型保存到本地。

      from keras.models import load_model

      model.save('model_file.h5')

      my_model = load_model('my_model.h5')

      在下一小節(jié)中會(huì)通過一個(gè)簡(jiǎn)明的案例讓大家了解如何使用Keras解決實(shí)際的應(yīng)用問題。

      網(wǎng)絡(luò) 深度學(xué)習(xí)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:華為云鄭葉來:優(yōu)勢(shì)擋不住趨勢(shì),技術(shù)創(chuàng)新是主旋律
      下一篇:ObjectInputStream 所引起的 Java 內(nèi)存泄漏問題
      相關(guān)文章
      亚洲精品免费视频| 国产亚洲精品精品精品| 亚洲福利视频一区二区| 亚洲国产最大av| 亚洲另类精品xxxx人妖| 亚洲欧洲日产国码在线观看| 亚洲AV成人片色在线观看高潮 | 亚洲中文字幕无码日韩| 久久精品国产亚洲AV不卡| 亚洲M码 欧洲S码SSS222| 国产亚洲男人的天堂在线观看| 亚洲av日韩aⅴ无码色老头| jzzijzzij在线观看亚洲熟妇| 亚洲av综合av一区二区三区| 99亚洲乱人伦aⅴ精品| 国产亚洲综合一区二区三区| 亚洲国产精品视频| 美腿丝袜亚洲综合| 国产亚洲av片在线观看16女人| 亚洲产国偷V产偷V自拍色戒| 亚洲成人在线网站| 4480yy私人影院亚洲| 亚洲欧洲精品一区二区三区| 亚洲1234区乱码| 亚洲欧美日韩中文无线码| 亚洲色成人WWW永久在线观看| 亚洲AV日韩AV一区二区三曲| 亚洲美女高清一区二区三区 | 亚洲AV无码专区在线亚| 国产亚洲精品影视在线| 久久无码av亚洲精品色午夜| 亚洲国产一区明星换脸| 亚洲日产无码中文字幕| 亚洲成年轻人电影网站www| 亚洲美女一区二区三区| 亚洲人成网站色在线观看| 国产AV无码专区亚洲AV麻豆丫| 亚洲精品综合久久| 亚洲成AV人片在线观看| 亚洲精品国产情侣av在线| 中文字幕乱码亚洲无线三区|