最近在學(xué)習(xí)Keras的使用愉耙,在此整理一下相關(guān)內(nèi)容。方式方法上,我想通過使用Keras構(gòu)建多種常見神經(jīng)網(wǎng)絡(luò)來逐步理解Keras赞辩,這樣的話雌芽,通過常見、容易理解的神經(jīng)網(wǎng)絡(luò)诗宣,一步步深入Keras使用膘怕。子曰:由也升堂矣想诅,未入于室也召庞。
BP神經(jīng)網(wǎng)絡(luò)使用誤差逆向傳播算法訓(xùn)練的多層前饋網(wǎng)絡(luò),是目前應(yīng)用非常廣泛的神經(jīng)網(wǎng)絡(luò)来破。按照Keras的角度篮灼,神經(jīng)網(wǎng)絡(luò)的構(gòu)建可以分為兩部分:建立神經(jīng)網(wǎng)絡(luò)模型和訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型。對(duì)于BP神經(jīng)網(wǎng)絡(luò)徘禁,網(wǎng)絡(luò)模型為多層前饋網(wǎng)絡(luò)诅诱,cost function采用平方和誤差函數(shù),訓(xùn)練采用梯度下降法送朱。
首先娘荡,通過Keras構(gòu)建前饋神經(jīng)網(wǎng)絡(luò),這部分主要采用Dense層來完成驶沼。Dense層是最簡(jiǎn)單炮沐,也是最常用的全連接網(wǎng)路層。
初步了解Keras回怜,推薦此網(wǎng)站Keras新手指南大年。
Dense層基本參數(shù):
- units:層輸出維度
- activation:激活函數(shù)
- init:權(quán)值初始化方法
- input_shape輸入張量(nb_samples, input_dim)
綜上,通過Dense層構(gòu)建前饋神經(jīng)網(wǎng)絡(luò)的方法如下:
#使用層次模型
model = Sequential()
#輸入層與第一個(gè)隱層同時(shí)建立玉雾,輸入層13維翔试,第一個(gè)隱層有10個(gè)神經(jīng)元,激活函數(shù)使用sigmoid
model.add(Dense(10, activation='sigmoid', input_dim=13))
#輸出層有3個(gè)神經(jīng)元复旬,激活函數(shù)使用softmax
model.add((Dense(3, activation='softmax'))
這樣我們就構(gòu)建了基本的前饋神經(jīng)網(wǎng)絡(luò)垦缅,但是進(jìn)行編譯,也就是對(duì)學(xué)習(xí)過程進(jìn)行配置驹碍。編譯一般需要設(shè)置3個(gè)參數(shù):
- 優(yōu)化器optimizer:神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法失都,例如SGD隨機(jī)梯度下降法。
- 損失函數(shù)loss:神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)試圖最小化的目標(biāo)函數(shù)幸冻,例如MSE誤差平方和粹庞。
- 評(píng)價(jià)指標(biāo)
綜上,通過前饋神經(jīng)網(wǎng)絡(luò)編譯設(shè)置如下:
#設(shè)置SGD隨機(jī)最速下降法的參數(shù)
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
#設(shè)置優(yōu)化器洽损、損失函數(shù)和評(píng)價(jià)指標(biāo)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
另外庞溜,構(gòu)建好神經(jīng)網(wǎng)絡(luò)后可以通過model.summary()獲取模型詳細(xì)信息。之后,可以通過model.fit()實(shí)現(xiàn)模型訓(xùn)練流码。
#設(shè)置訓(xùn)練集又官,epochs訓(xùn)練輪數(shù),batch_size梯度下降每個(gè)批的個(gè)數(shù)漫试,validation_data設(shè)置驗(yàn)證集
model.fit(train_x_scaled, y_train, epochs=20, batch_size=10,validation_data=(test_x_scaled, y_test))
訓(xùn)練完成之后六敬,就可以驗(yàn)證模型在測(cè)試集上的誤差。
score = model.evaluate(test_x_scaled, y_test, batch_size=10)
完整的程序和數(shù)據(jù):下載
歡迎訪問我的博客monte3card's blog