1 Sequential參數
model = Sequential()
model.add(Dense(32, input_dim=78))
解釋:
Sequential 的第一個關於輸入數據shape的參數,後邊的各個層則可以自動推到出中間數據的shape
01 傳遞一個input_shape的關鍵字參數給第一層,如果填入None則表示此位置可能是任何正整數。數據的batch大小不應包含在其中。
02 有些2D層,如Dense,支持通過指定其輸入維度input_dim來隱含的指定輸入數據shape,是一個Int類型的數據。一些3D的時域層支持通過參數input_dim和input_length來指定輸入shape。
03 如果你需要爲輸入指定一個固定大小的batch_size(常用於stateful RNN網絡),可以傳遞batch_size參數到一個層中,例如你想指定輸入張量的batch大小是32,數據shape是(6,8),則你需要傳遞batch_size=32和input_shape=(6,8)。
2、compile配置學習過程
model.compile(optimizer='rmspropy',loss='categorical_crossentropy',metrics=['accuracy'])
01 優化器optimizer:
該參數可指定爲已預定義的優化器名,如rmsprop、adagrad,或一個Optimizer類的對象。
02 損失函數loss:
該參數爲模型試圖最小化的目標函數,它可爲預定義的損失函數名,如categorical_crossentropy、mse,也可以爲一個損失函數。
03 指標列表metrics:
對分類問題,我們一般將該列表設置爲metrics=['accuracy']。指標可以是一個預定義指標的名字,也可以是一個用戶定製的函數.指標函數應該返回單個張量,或一個完成metric_name - > metric_value映射的字典.
3、案例
01 基於多層感知器Softmax多分類(圖片)
from keras.models import Sequential
from keras.layers import Dense,Dropout,Activation
from keras.optimizers import SGD
import keras #abd
# Generate dummy data
import numpy as np
x_train=np.random.random((1000,20))
y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=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()
# Dense(64) is a fully-connected Layer with 64 hidden units.
# in the first layer ,you must specify the expected input data shape;
# here,20-dimensional vectors.
model.add(Dense(64,activation='relu',input_dim=20))
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.9,nesterov=True)
model.compile(loss='categorical_crossentropy', # 損失函數
optimizer=sgd, #
metrics=['accuracy'] # 精確度,評估模型在訓練和測試時的網絡性能的指標。
)
model.fit(x_train,y_train,epochs=20,batch_size=128)
# batch_size 整數,指定進行梯度下降時每個批次包含的樣本數訓練時一個批次的樣本
# 會被計算一次梯度下降,使目標函數進行一步優化
# epochs;訓練20次,整數,訓練終止時候的epoch值
score=model.evaluate(x_test,y_test,batch_size=128)
# 評估函數 ,本函數返回一個測試誤差的標量值(如果模型沒有其他評價指標)。
02 MLP的二分類
import numpy as np
from keras.models import Sequential
from keras.layers import Dense,Dropout
x_train=np.random.random((1000,20))
y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=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,input_dim=20,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1,activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train,y_train,
epoches=20,
batch_size=128)
score=model.evaluate(x_test,y_test,batch_size=128)
相關詳細說明見官方文檔:https://keras-cn.readthedocs.io/en/latest/getting_started/sequential_model/