Keras序贯模型
2.序貫?zāi)P?/h1>
序貫?zāi)P?Sequential Model)是多個(gè)網(wǎng)絡(luò)層的線性堆疊,也就是”一條路走到黑”。但是不適合網(wǎng)絡(luò)之間穿插情況或者多輸入多輸出情況。
序貫?zāi)P陀袃煞N方式構(gòu)建網(wǎng)絡(luò)
2.1簡單的漢堡式疊法
可以通過Sequential模型傳遞一個(gè)layer的list來構(gòu)造序貫?zāi)P汀?/p>
#兩種方式1.漢堡生成
model = Sequential([Dense(32,input_dim=784),Activation('relu'),Dense(10),Activation('softmax')
])
#完成網(wǎng)絡(luò)構(gòu)建
2.2加菜式構(gòu)建模型
或者通過.add()方法一個(gè)個(gè)將layer加入到模型中
#2.手動(dòng)加菜
#完成網(wǎng)絡(luò)構(gòu)建
用序貫?zāi)P团芤粋€(gè)小demo基于多層感知器的softmax多分類
from keras.models import Sequential #Sequential聲明使用序貫?zāi)P?from keras.layers import Dense, Dropout, Activation #導(dǎo)入層Dropout隨機(jī)失活 Dense全連接層、Activation激活函數(shù) from keras.optimizers import SGD #SGD隨機(jī)梯度下降 import keras import numpy as np x_train = np.random.random((1000, 20)) #隨機(jī)訓(xùn)練樣本,樣本維度20維 y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10) #映射成10個(gè)類別x_test = np.random.random((100, 20)) y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)model = Sequential() #建立模型#添加網(wǎng)絡(luò)層 model.add(Dense(64, activation='relu', input_dim=20)) # Dense(64)神經(jīng)元有64個(gè) #input_dim必須與樣本維度對(duì)應(yīng) #activation激活函數(shù) model.add(Dropout(0.5))#隨機(jī)失活 model.add(Dense(64, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(10, activation='softmax'))sgd = SGD(lr=0.01, decay=1e-6, momentum=0.8, nesterov=True)#制定優(yōu)化器參數(shù)學(xué)習(xí)率0.01,動(dòng)量0.8 model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])model.fit(x_train, y_train,epochs=20,batch_size=128) score = model.evaluate(x_test, y_test, batch_size=128)#結(jié)果acc停留在0.1060左右,跑了N次結(jié)果都停留在10%左右
用序貫?zāi)P蜆?gòu)建CNN
import numpy as np import keras from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten #flatten作用是方便后面接全連接層 from keras.layers import Conv2D, MaxPooling2D #Conv2D構(gòu)建2D卷積層,maxpooling2D構(gòu)建池化層 from keras.optimizers import SGD準(zhǔn)備數(shù)據(jù) x_train = np.random.random((100, 100, 100, 3)) #100張圖片寬高100,3彩色圖RGB三個(gè)顏色通道 y_train = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10) x_test = np.random.random((20, 100, 100, 3)) y_test = keras.utils.to_categorical(np.random.randint(10, size=(20, 1)), num_classes=10)#模型構(gòu)建 model = Sequential() model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(100, 100, 3))) model.add(Conv2D(32, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(256, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(10, activation='softmax'))#開始訓(xùn)練測試 sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) model.compile(loss='categorical_crossentropy', optimizer=sgd)model.fit(x_train, y_train, batch_size=32, epochs=10) score = model.evaluate(x_test, y_test, batch_size=32)總結(jié)
- 上一篇: 变频器的常用参数设置(古月金真著)
- 下一篇: 在线平面图设计教程