keras FAQ

介紹

這里記錄keras文檔FAQ中在工作中用到的一些問題和技巧济榨。參考自這里
主要包括:

  • 多GPU訓練
  • 獲取中間層的輸出
  • 凍結(freeze)某些層

多GPU運行

運行一個模型在多個gpu上有兩種方法:數(shù)據并行了赌、設備并行

數(shù)據并行

數(shù)據并行是將一個模型在每個GPU上都部署一份進行訓練,同時處理川慌,加速訓練。
keras有內置的工具keras.utils.multi_gpu_model,該模塊可以為任何自定義模型產生一個數(shù)據并行模型蜒犯,在多gpu上達到線性擬合加速(quasi-linear speedup)抽活。
更多可以參考multi_gpu_model
這里給出一個例子

from keras.utils import multi_gpu_model
parallel_model = multi_gpu_model(model, gpus=8)
parallel_model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
# This `fit` call will be distributed on 8 GPUs.
parallel_model.fit(x, y, epochs=20, batch_size=256) # batch size: 256, each GPU will process 32 samples.

設備并行

設備并行是在不同的GPU上運行一個模型的多個分支硫戈,多用于模型中有多個并行的結構,例如AlexNet的卷積就是放到多個GPU上運行的下硕。提供一個例子

# Model where a shared LSTM is used to encode two different sequences in parallel
input_a = keras.Input(shape=(140, 256))
input_b = keras.Input(shape=(140, 256))
shared_lstm = keras.layers.LSTM(64)
# Process the first sequence on one GPU
with tf.device_scope('/gpu:0'):
    encoded_a = shared_lstm(tweet_a)
# Process the next sequence on another GPU
with tf.device_scope('/gpu:1'):
    encoded_b = shared_lstm(tweet_b)
# Concatenate results on CPU
with tf.device_scope('/cpu:0'):
    merged_vector = keras.layers.concatenate([encoded_a, encoded_b], axis=-1)

如何獲取某一層的輸出

從Model中獲取輸出

創(chuàng)建一個模型丁逝,直接輸出模型預測的結果汁胆。如下。

from keras.models import Model
model = ...  # create the original model
layer_name = 'my_layer'
intermediate_layer_model = Model(inputs=model.input,
                                 outputs=model.get_layer(layer_name).output)
intermediate_output = intermediate_layer_model.predict(data)

使用keras function

from keras import backend as K
# with a Sequential model
get_3rd_layer_output = K.function([model.layers[0].input], [model.layers[3].output])
layer_output = get_3rd_layer_output([x])[0]

如果模型有dropout霜幼、BN

如果模型有dropout嫩码、BN這種訓練期有效、測試期無效的層罪既,需要給一個指標(flag)铸题。如下

get_3rd_layer_output = K.function([model.layers[0].input, K.learning_phase()], [model.layers[3].output])
# output in test mode = 0
layer_output = get_3rd_layer_output([x, 0])[0]
# output in train mode = 1
layer_output = get_3rd_layer_output([x, 1])[0]

如何凍結(freeze)某些層

凍結代表在訓練時期,某一些層的參數(shù)是不變的琢感。這個多用于微調模型丢间。
只需要在創(chuàng)建某一層的時候設定trainable參數(shù)為False。
frozen_layer = Dense(32, trainable=False)
或者在創(chuàng)建之后設定驹针,如下烘挫。

x = Input(shape=(32,))
layer = Dense(32)
layer.trainable = False
y = layer(x)

frozen_model = Model(x, y)
# in the model below, the weights of `layer` will not be updated during training
frozen_model.compile(optimizer='rmsprop', loss='mse')

layer.trainable = True
trainable_model = Model(x, y)
# with this model the weights of the layer will be updated during training
# (which will also affect the above model since it uses the same layer instance)
trainable_model.compile(optimizer='rmsprop', loss='mse')

frozen_model.fit(data, labels)  # this does NOT update the weights of `layer`
trainable_model.fit(data, labels)  # this updates the weights of `layer`
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市牌捷,隨后出現(xiàn)的幾起案子墙牌,更是在濱河造成了極大的恐慌,老刑警劉巖暗甥,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喜滨,死亡現(xiàn)場離奇詭異,居然都是意外死亡撤防,警方通過查閱死者的電腦和手機虽风,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寄月,“玉大人辜膝,你說我怎么就攤上這事⊙梗” “怎么了厂抖?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長克懊。 經常有香客問我忱辅,道長,這世上最難降的妖魔是什么谭溉? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任墙懂,我火速辦了婚禮,結果婚禮上扮念,老公的妹妹穿的比我還像新娘损搬。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布巧勤。 她就那樣靜靜地躺著嵌灰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪踢关。 梳的紋絲不亂的頭發(fā)上伞鲫,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音签舞,去河邊找鬼秕脓。 笑死,一個胖子當著我的面吹牛儒搭,可吹牛的內容都是我干的吠架。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼搂鲫,長吁一口氣:“原來是場噩夢啊……” “哼傍药!你這毒婦竟也來了?” 一聲冷哼從身側響起魂仍,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拐辽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后擦酌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俱诸,經...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年赊舶,在試婚紗的時候發(fā)現(xiàn)自己被綠了睁搭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡笼平,死狀恐怖园骆,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情寓调,我是刑警寧澤锌唾,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站夺英,受9級特大地震影響晌涕,放射性物質發(fā)生泄漏。R本人自食惡果不足惜秋麸,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炬太。 院中可真熱鬧灸蟆,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至斋枢,卻和暖如春帘靡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓤帚。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工描姚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人戈次。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓轩勘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怯邪。 傳聞我的和親對象是個殘疾皇子绊寻,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容

  • 參考keras 中文文檔 1.在多張GPU卡上使用Keras 以TnesorFlow后端,可以使用數(shù)據并行的方式悬秉。...
    趙小鬧鬧閱讀 4,557評論 0 8
  • 引 之前需要做一個圖像分類模型澄步,因為剛入門,拿cifar10數(shù)據集練了下手和泌,試了幾種優(yōu)化方案和不同的模型效果村缸,這里...
    Cloudox_閱讀 17,032評論 2 21
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡書 聲明:作者翻譯論文僅為學習,如有侵權請...
    SnailTyan閱讀 5,084評論 0 8
  • 準備寫昨天因為拉肚子沒有寫的日記(呵呵噠允跑,都是借口)王凑,腦中放映了一遍昨天做過的事,說過的話聋丝,發(fā)現(xiàn)除了還記得去醫(yī)院以...
    沈小珂書單閱讀 273評論 0 0
  • 探究的概念是:找尋問題的答案索烹、研究問題,以及整合信息弱睦,從而幫助我們得出結論百姓。探究,有助于我們超越第一印象况木、感覺垒拢、先...
    梁夢婷閱讀 100評論 0 0