Keras序贯模型
2.序貫模型
序貫模型(Sequential Model)是多個網絡層的線性堆疊,也就是”一條路走到黑”。但是不適合網絡之間穿插情況或者多輸入多輸出情況。
序貫模型有兩種方式構建網絡
2.1簡單的漢堡式疊法
可以通過Sequential模型傳遞一個layer的list來構造序貫模型。
#完成網絡構建
2.2加菜式構建模型
或者通過.add()方法一個個將layer加入到模型中
#2.手動加菜
#完成網絡構建
用序貫模型跑一個小demo基于多層感知器的softmax多分類
from keras.models import Sequential #Sequential聲明使用序貫模型 from keras.layers import Dense, Dropout, Activation #導入層Dropout隨機失活 Dense全連接層、Activation激活函數 from keras.optimizers import SGD #SGD隨機梯度下降 import keras import numpy as np x_train = np.random.random((1000, 20)) #隨機訓練樣本,樣本維度20維 y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10) #映射成10個類別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() #建立模型#添加網絡層 model.add(Dense(64, activation='relu', input_dim=20)) # Dense(64)神經元有64個 #input_dim必須與樣本維度對應 #activation激活函數 model.add(Dropout(0.5))#隨機失活 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)#制定優化器參數學習率0.01,動量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)#結果acc停留在0.1060左右,跑了N次結果都停留在10%左右
用序貫模型構建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構建2D卷積層,maxpooling2D構建池化層 from keras.optimizers import SGD準備數據 x_train = np.random.random((100, 100, 100, 3)) #100張圖片寬高100,3彩色圖RGB三個顏色通道 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)#模型構建 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'))#開始訓練測試 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)總結
- 上一篇: 变频器的常用参数设置(古月金真著)
- 下一篇: 在线平面图设计教程