Keras Flatten的input_shape問題

在fine tune Keras Applications中給出的分類CNN Model的時候驱显,如果在Model的top層之上加入Flatten層就會出現錯誤》沤樱可能的報錯信息類似下面的內容:

$ python3 ./train.py
Using TensorFlow backend.
Found 60000 images belonging to 200 classes.
Found 20000 images belonging to 200 classes.
# 略過一些信息...
Creating TensorFlow device (/device:GPU:0) ->
(device: 0, name: GeForce GTX 1080, pci bus id: 0000:02:00.0, compute capability: 6.1)

# ↓↓↓ 錯誤出現 ↓↓↓
Traceback (most recent call last):
  File "./train.py", line 51, in <module>
    x = Flatten()(x)
  File "/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py", line 636, in __call__
    output_shape = self.compute_output_shape(input_shape)
  File "/usr/local/lib/python3.5/dist-packages/keras/layers/core.py", line 490, in
    compute_output_shape
    '(got ' + str(input_shape[1:]) + '. '
ValueError: The shape of the input to "Flatten" is not fully defined (got (None, None, 1536).
Make sure to pass a complete "input_shape" or "batch_input_shape" argument
to the first layer in your model.
# ↑↑↑ 錯誤結束 ↑↑↑

出錯的代碼行是x = Flatten()(x)刺啦,錯誤提示為ValueError: The shape of the input to "Flatten" is not fully defined (got (None, None, 1536). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.

Flatten()(x)希望參數擁有確定shape屬性,實際得到的參數xshape屬性是(None, None, 1536)透乾,很明顯不符合要求洪燥。同時磕秤,錯誤提示信息中也給出了修正錯誤的方法Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model。即捧韵,在Model的第一層給出確定的input_shapebatch_input_shape市咆。那么,如何在Keras中解決該問題呢再来?

以Keras Applications中的VGG16為例蒙兰,我們只需要在其初始化的時候,給出具體的input_shape就可以了芒篷。例如搜变,Keras給出的VGG16模型輸入層圖像尺寸是(224, 224)的,所以如果使用TensorFlow的channels_last數據格式针炉,則初始化代碼為:

vgg16 = keras.applications.vgg16.VGG16(include_top=False, weights='imagenet', input_shape=(224, 224, 3))
x = vgg16.output
x = Flatten()(x)
...

注意挠他,因為要fine tune模型,對模型分類的種類和類別數進行重新定義篡帕,所以include_top=False殖侵,這樣返回的模型不包括VGG16的全連接層和輸出層。

參考:

  1. Unable to fine tune Keras vgg16 model - input shape issue
  2. Keras Applications
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末镰烧,一起剝皮案震驚了整個濱河市拢军,隨后出現的幾起案子,更是在濱河造成了極大的恐慌怔鳖,老刑警劉巖茉唉,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異结执,居然都是意外死亡度陆,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門昌犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坚芜,“玉大人,你說我怎么就攤上這事斜姥。” “怎么了沧竟?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵铸敏,是天一觀的道長。 經常有香客問我悟泵,道長杈笔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任糕非,我火速辦了婚禮蒙具,結果婚禮上球榆,老公的妹妹穿的比我還像新娘。我一直安慰自己禁筏,他們只是感情好持钉,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著篱昔,像睡著了一般每强。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上州刽,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天空执,我揣著相機與錄音,去河邊找鬼穗椅。 笑死辨绊,一個胖子當著我的面吹牛,可吹牛的內容都是我干的匹表。 我是一名探鬼主播邢羔,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桑孩!你這毒婦竟也來了拜鹤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤流椒,失蹤者是張志新(化名)和其女友劉穎敏簿,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體宣虾,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡惯裕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了绣硝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜻势。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鹉胖,靈堂內的尸體忽然破棺而出握玛,到底是詐尸還是另有隱情,我是刑警寧澤甫菠,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布挠铲,位于F島的核電站,受9級特大地震影響寂诱,放射性物質發(fā)生泄漏拂苹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一痰洒、第九天 我趴在偏房一處隱蔽的房頂上張望瓢棒。 院中可真熱鬧浴韭,春花似錦、人聲如沸脯宿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗅绰。三九已至舍肠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窘面,已是汗流浹背翠语。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留财边,地道東北人肌括。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像酣难,于是被迫代替她去往敵國和親谍夭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容