sequential遮咖,即序貫?zāi)P停嵌鄠€網(wǎng)絡(luò)層的線性疊加造虏,可以將Layer的list作為sequential()的參數(shù)傳遞給sequential模型御吞,也可以通過sequential的add方法將layer一個個加入模型中。
tuple是元組的意思漓藕。關(guān)于卷積神經(jīng)網(wǎng)絡(luò)CNN陶珠,ResNet和Dense是兩種不同的CNN模型,Res是建立前面層和后面層的短路連接享钞,有利于梯度的反向傳播揍诽,從而訓練出更深的神經(jīng)網(wǎng)絡(luò),Dense則是建立前面所有層和后面層的密集連接。Dense還可以實現(xiàn)特征重用(feature reuse)寝姿。這讓Dense可以在參數(shù)和計算成本更小的情況下實現(xiàn)比Res更好的性能交排。
我是這樣理解的,Dense是通過密集連接來達到特征重用的效果饵筑,而特征的反復使用也讓它對特征的利用的更充分。假設(shè)有一個N層的神經(jīng)網(wǎng)絡(luò)处坪,那么就有N+1個節(jié)點根资。如果是Res,那么也就只有N次連接了同窘。但是Dense通過密集連接玄帕,讓后面的每一層都跟前面的所有層都建立連接關(guān)系,那么就有(N+1)*N/2想邦,除以2是排除掉重復的連接裤纹。在Res中,每一層僅僅接受前面一層作為輸入丧没,而在Dense中鹰椒,每一層會接受前面所有層作為輸入。
Dense的幾個參數(shù)呕童,output_dim漆际,輸出數(shù)據(jù)的維度;init夺饲,初始化權(quán)值的函數(shù)名稱奸汇,可以傳遞自己編寫的theano function,也可以用keras內(nèi)置的往声,如果沒有給weights傳遞參數(shù)時擂找,此參數(shù)必寫;weights浩销,用于初始化權(quán)值的數(shù)組組成的list贯涎,如果指定了init,那么weights可以復制None或者空缺撼嗓;input_dim柬采,輸入數(shù)據(jù)的維度。這里我理解的Dense是一個一維的全連接層且警。
relu是一個激活函數(shù)粉捻,其定義為當x為負,函數(shù)值為0斑芜,否則肩刃,函數(shù)值為x。值得一提的是,有一些激活函數(shù)盈包,雖然圖像比較平滑沸呐,但由于加入了指數(shù)和對數(shù)運算,無形中增加了計算量呢燥,最后的效果也不一定好崭添。
模型訓練前需要進行配置(compile),compile(optimizer,loss,metrics)叛氨,其中呼渣,optimizer可以是預(yù)定義的優(yōu)化器,如rmsprop寞埠,adagrad屁置;loss為損失函數(shù),也叫目標函數(shù)仁连,也可以是預(yù)定義的loss蓝角,如categorical_crossentropy、mse饭冬;metrics為指標列表使鹅。
http://www.reibang.com/p/970aed041046 ?這里簡單的說了下ModelCheckpoint中的參數(shù)。
history字典包含val_loss伍伤、val_acc并徘、loss、acc扰魂,其中val_是測試集上的麦乞,另外一個是訓練集上的,loss表示損失值劝评,acc表示準確率姐直。