理解和使用Keras的sequential模型

Sequential模型

Sequential模型字面上的翻譯是順序模型凿可,感覺是簡單的線性模型裹粤,但實際上Sequential模型可以構(gòu)建非常復(fù)雜的神經(jīng)網(wǎng)絡(luò)拯坟,包括全連接神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)夕膀、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)等等果善。Sequential更準確的理解應(yīng)該為堆疊讲逛,通過堆疊許多不同的層,構(gòu)建出深度神經(jīng)網(wǎng)絡(luò)岭埠。

Sequential模型的核心操作

最核心的操作是添加圖層盏混,以下收錄一些比較流行的圖層:

圖層名稱 操作方法 備注
卷積層 model.add(ConvnD(64, (3, 3), activation='relu')) 對n(1,2,3)維輸入進行卷積操作
轉(zhuǎn)換層 model.add(Reshape((3, 4), input_shape=(12,))) Reshape層用來將輸入shape轉(zhuǎn)換為特定的shape
全連接層 model.add(Dense(256, activation='relu')) 實現(xiàn)的運算是output = activation(dot(input, kernel)+bias)。其中activation是逐元素計算的激活函數(shù)惜论,kernel是本層的權(quán)值矩陣许赃,bias為偏置向量
dropout model.add(Dropout(0.5)) Dropout將在訓(xùn)練過程中每次更新參數(shù)時按一定概率(rate)隨機斷開輸入神經(jīng)元,Dropout層用于防止過擬合馆类。
Flattening layer(展平層) model.add(Flatten()) 將輸入“壓平”混聊,即把多維的輸入一維化,常用在從卷積層到全連接層的過渡乾巧。

備注:
可以參考官方介紹layer的中文文檔:https://keras-cn.readthedocs.io/en/latest/layers/about_layer/

Sequential模型開發(fā)流程

Sequential模型構(gòu)建通常5步:
1.定義模型
2.定義目標
3.輸入數(shù)據(jù)
4.訓(xùn)練模型
5.評估模型

Sequential模型實操

import keras
import numpy as np
import matplotlib.pyplot as plt
# Sequential按順序構(gòu)成的模型
from keras.models import Sequential
# Dense全連接層
from keras.layers import Dense, Activation
# 優(yōu)化器:隨機梯度下降
from keras.optimizers import SGD

# 生成非線性數(shù)據(jù)模型
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

#訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)
number = 100
x_data = np.linspace(-4, 4, number)
y_data = np.sin(x_data)+np.random.uniform(-0.5, 0.5, number)

print(x_data)
print(y_data)
# 顯示隨機點
plt.scatter(x_data, y_data)
plt.show()
##################################################################################
# 構(gòu)建一個順序模型
model = Sequential()

# 在模型中添加一個全連接層
# 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu):1-10-1句喜,即輸入層為1個神經(jīng)元,隱藏層10個神經(jīng)元沟于,輸出層1個神經(jīng)元咳胃。 

# 激活函數(shù)加法1
model.add(Dense(units=10, input_dim=1))
model.add(Activation('tanh'))
model.add(Dense(units=1))
model.add(Activation('tanh'))

# 定義優(yōu)化算法
sgd = SGD(lr=0.3)
# sgd: Stochastic gradient descent,隨機梯度下降法
# mse: Mean Squared Error, 均方誤差
model.compile(optimizer=sgd, loss='mse')

# 進行訓(xùn)練
for step in range(3000):
    # 每次訓(xùn)練一個批次
    cost = model.train_on_batch(x_data, y_data)
    # 每500個batch打印一次cost值
    if step % 200 == 0:
        print('cost: ', cost)
# 打印權(quán)值和偏置值
W, b = model.layers[0].get_weights()
print('W:', W, ' b: ', b)
print(len(model.layers))

# 把x_data輸入網(wǎng)絡(luò)中,得到預(yù)測值y_pred
y_pred = model.predict(x_data)

# 顯示隨機點
plt.scatter(x_data, y_data)
# 顯示預(yù)測結(jié)果
plt.plot(x_data, y_pred, 'r-', lw=3)
plt.show()

上面的代碼中旷太,輸入層是全連接層展懈。接下來就是為模型添加中間層和輸出層。定義優(yōu)化器(并指定損失函數(shù))來指定反向傳播的計算方法供璧。在keras中存崖,Sequential模型的compile方法用來完成這一操作。
例如睡毒,在下面的這一行代碼中来惧,我們使用’sgd’優(yōu)化器,損失函數(shù)為’mse’演顾。

model.compile(optimizer=sgd, loss='mse')

創(chuàng)建了模型開始訓(xùn)練供搀。設(shè)置迭代次數(shù)、驗證數(shù)據(jù)集等等偶房。

cost = model.train_on_batch(x_data, y_data)

最后趁曼,使用predict方法來看看預(yù)測結(jié)果:

y_pred = model.predict(x_data)

以上就是在Keras中使用Sequential模型的基本構(gòu)建塊,相比tensorflow棕洋,keras的代碼更少,不用關(guān)心具體的算法實現(xiàn)乒融。
總結(jié)
keras中的Sequential模型其實非常強大掰盘,而且接口簡單易懂摄悯,大部分問題,只需要使用Sequential模型即可滿足需求愧捕。只是當工具使用即可奢驯,集中精力解決具體的問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末次绘,一起剝皮案震驚了整個濱河市瘪阁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邮偎,老刑警劉巖管跺,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異禾进,居然都是意外死亡豁跑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門泻云,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艇拍,“玉大人,你說我怎么就攤上這事宠纯⌒断Γ” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵婆瓜,是天一觀的道長娇哆。 經(jīng)常有香客問我,道長勃救,這世上最難降的妖魔是什么碍讨? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮蒙秒,結(jié)果婚禮上勃黍,老公的妹妹穿的比我還像新娘。我一直安慰自己晕讲,他們只是感情好覆获,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓢省,像睡著了一般弄息。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上勤婚,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天摹量,我揣著相機與錄音,去河邊找鬼。 笑死缨称,一個胖子當著我的面吹牛凝果,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播睦尽,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼器净,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了当凡?” 一聲冷哼從身側(cè)響起山害,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沿量,沒想到半個月后浪慌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡欧瘪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年眷射,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佛掖。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡妖碉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芥被,到底是詐尸還是另有隱情欧宜,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布拴魄,位于F島的核電站冗茸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匹中。R本人自食惡果不足惜夏漱,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顶捷。 院中可真熱鬧挂绰,春花似錦、人聲如沸服赎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽重虑。三九已至践付,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缺厉,已是汗流浹背永高。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工隧土, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乏梁。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓次洼,卻偏偏與公主長得像关贵,于是被迫代替她去往敵國和親遇骑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容