最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

keras多顯卡訓(xùn)練方式

 更新時(shí)間:2020年06月10日 15:32:16   作者:深夜蟲鳴  
這篇文章主要介紹了keras多顯卡訓(xùn)練方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

使用keras進(jìn)行訓(xùn)練,默認(rèn)使用單顯卡,即使設(shè)置了os.environ['CUDA_VISIBLE_DEVICES']為兩張顯卡,也只是占滿了顯存,再設(shè)置tf.GPUOptions(allow_growth=True)之后可以清楚看到,只占用了第一張顯卡,第二張顯卡完全沒用。

要使用多張顯卡,需要按如下步驟:

(1)import multi_gpu_model函數(shù):from keras.utils import multi_gpu_model

(2)在定義好model之后,使用multi_gpu_model設(shè)置模型由幾張顯卡訓(xùn)練,如下:

model=Model(...) #定義模型結(jié)構(gòu)
model_parallel=multi_gpu_model(model,gpu=n) #使用幾張顯卡n等于幾
model_parallel.compile(...) #注意是model_parallel,不是model

通過以上代碼,model將作為CPU上的原始模型,而model_parallel將作為拷貝模型被復(fù)制到各個(gè)GPU上進(jìn)行梯度計(jì)算。如果batchsize為128,顯卡n=2,則每張顯卡單獨(dú)計(jì)算128/2=64張圖像,然后在CPU上將兩張顯卡計(jì)算得到的梯度進(jìn)行融合更新,并對模型權(quán)重進(jìn)行更新后再將新模型拷貝到GPU再次訓(xùn)練。

(3)從上面可以看出,進(jìn)行訓(xùn)練時(shí),仍然在model_parallel上進(jìn)行:

model_parallel.fit(...) #注意是model_parallel

(4)保存模型時(shí),model_parallel保存了訓(xùn)練時(shí)顯卡數(shù)量的信息,所以如果直接保存model_parallel的話,只能將模型設(shè)置為相同數(shù)量的顯卡調(diào)用,否則訓(xùn)練的模型將不能調(diào)用。因此,為了之后的調(diào)用方便,只保存CPU上的模型,即model:

model.save(...) #注意是model,不是model_parallel

如果用到了callback函數(shù),則默認(rèn)保存的也是model_parallel(因?yàn)橛?xùn)練函數(shù)是針對model_parallel的),所以要用回調(diào)函數(shù)保存model的話需要自己對回調(diào)函數(shù)進(jìn)行定義:

class OwnCheckpoint(keras.callbacks.Callback):
 def __init__(self,model):
  self.model_to_save=model
 def on_epoch_end(self,epoch,logs=None): #這里logs必須寫
  self.model_to_save.save('model_advanced/model_%d.h5' % epoch)

定以后具體使用如下:

checkpoint=OwnCheckpoint(model)
model_parallel.fit_generator(...,callbacks=[checkpoint])

這樣就沒問題了!

補(bǔ)充知識:keras.fit_generator及多卡訓(xùn)練記錄

1.環(huán)境問題

使用keras,以tensorflow為背景,tensorflow1.14多卡訓(xùn)練會出錯(cuò) python3.6

2.代碼

2.1

os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ['CUDA_VISIBLE_DEVICES'] = '4,5'

2.2 自定義generator函數(shù)

def img_image_generator(path_img, path_lab, batch_size, data_list):
 while True:
 # 'train_list.csv'
 file_list = pd.read_csv(data_list, sep=',',usecols=[1]).values.tolist()
 file_list = [i[0] for i in file_list]
 cnt = 0
 X = []
 Y1 = []
 for file_i in file_list:
 x = cv2.imread(path_img+'/'+file_i, cv2.IMREAD_GRAYSCALE)
 x = x.astype('float32')
 x /= 255.
 y = cv2.imread(path_lab+'/'+file_i, cv2.IMREAD_GRAYSCALE)
 y = y.astype('float32')
 y /= 255.
 X.append(x.reshape(256, 256, 1))
 Y1.append(y.reshape(256, 256, 1))
 cnt += 1
 if cnt == batch_size:
 cnt = 0
 yield (np.array(X), [np.array(Y1), np.array(Y1)])
 X = []
 Y1 = []

2.3 函數(shù)調(diào)用及訓(xùn)練

 generator_train = img_image_generator(path1, path2, 4, pathcsv_train)
 generator_test= img_image_generator(path1, path2, 4, pathcsv_test)
 model.fit_generator(generator_train, steps_per_epoch=237*2, epochs=50, callbacks=callbacks_list, validation_data=generator_test, validation_steps=60*2)

3. 多卡訓(xùn)練

3.1 復(fù)制model

model_parallel = multi_gpu_model(model, gpus=2)

3.2 checkpoint 定義

class ParallelModelCheckpoint(ModelCheckpoint):
  def __init__(self, model, filepath, monitor='val_out_final_score', verbose=0,\
   save_best_only=False, save_weights_only=False, mode='auto', period=1):
   self.single_model = model 
   super(ParallelModelCheckpoint, self).__init__(filepath, monitor, verbose, save_best_only, save_weights_only, mode, period)
  
  def set_model(self, model):
   super(ParallelModelCheckpoint, self).set_model(self.single_model)

使用

model_checkpoint = ParallelModelCheckpoint(model=model, filepath=filepath, monitor='val_loss',verbose=1, save_best_only=True, mode='min')

3.3 注意的問題

保存模型是時(shí)候需要使用以原來的模型保存,不能使用model_parallel保存

以上這篇keras多顯卡訓(xùn)練方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 聊聊pytorch測試的時(shí)候?yàn)楹我由蟤odel.eval()

    聊聊pytorch測試的時(shí)候?yàn)楹我由蟤odel.eval()

    這篇文章主要介紹了聊聊pytorch測試的時(shí)候?yàn)楹我由蟤odel.eval()的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python圖形驗(yàn)證碼識別教程詳解

    Python圖形驗(yàn)證碼識別教程詳解

    這篇文章主要介紹了Python圖形驗(yàn)證碼識別,目前,許多網(wǎng)站采取各種各樣的措施來反爬蟲,其中一個(gè)措施便是使用驗(yàn)證碼。隨著技術(shù)的發(fā)展,驗(yàn)證碼的花樣越來越多。驗(yàn)證碼最初是幾個(gè)數(shù)字組合的簡單的圖形驗(yàn)證碼,后來加入了英文字母和混淆曲線
    2023-02-02
  • Python?變量類型實(shí)例詳解

    Python?變量類型實(shí)例詳解

    這篇文章主要介紹了Python?變量類型實(shí)例詳解,基于變量的數(shù)據(jù)類型,解釋器會分配指定內(nèi)存,并決定什么數(shù)據(jù)可以被存儲在內(nèi)存中,接下來更多詳細(xì)內(nèi)容需要的小伙伴可以參考下面文章,希望對你有所幫助
    2022-02-02
  • 報(bào)錯(cuò)No?module?named?numpy問題的解決辦法

    報(bào)錯(cuò)No?module?named?numpy問題的解決辦法

    之前安裝了Python,后來因?yàn)榫毩?xí)使用Python寫科學(xué)計(jì)算的東西,又安裝了Anaconda,但是安裝Anaconda之后又出現(xiàn)了一個(gè)問題,下面這篇文章主要給大家介紹了關(guān)于報(bào)錯(cuò)No?module?named?numpy問題的解決辦法,需要的朋友可以參考下
    2022-08-08
  • Python標(biāo)準(zhǔn)庫copy的具體使用

    Python標(biāo)準(zhǔn)庫copy的具體使用

    copy模塊是Python標(biāo)準(zhǔn)庫中用于對象拷貝的核心模塊,提供了淺拷貝(copy)和深拷貝(deepcopy)兩種對象復(fù)制機(jī)制,本文主要介紹了Python標(biāo)準(zhǔn)庫copy的具體使用,感興趣的可以了解一下
    2025-04-04
  • 使用python采集Excel表中某一格數(shù)據(jù)

    使用python采集Excel表中某一格數(shù)據(jù)

    這篇文章主要介紹了使用python采集Excel表中某一格數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 對django中render()與render_to_response()的區(qū)別詳解

    對django中render()與render_to_response()的區(qū)別詳解

    今天小編就為大家分享一篇對django中render()與render_to_response()的區(qū)別詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python?中的?list、tuple、set、dict的底層實(shí)現(xiàn)小結(jié)

    Python?中的?list、tuple、set、dict的底層實(shí)現(xiàn)小結(jié)

    本文詳細(xì)介紹了Python中四種常用數(shù)據(jù)結(jié)構(gòu)——list、tuple、set和dict的底層實(shí)現(xiàn),包括它們的存儲方式、性能特點(diǎn)以及適用場景,感興趣的朋友一起看看吧
    2025-03-03
  • 關(guān)于windos10環(huán)境下編譯python3版pjsua庫的問題

    關(guān)于windos10環(huán)境下編譯python3版pjsua庫的問題

    pjsua默認(rèn)綁定的python版本是python 2.4,使用起來有諸多限制,希望可以使用python3調(diào)用pjsua的庫實(shí)現(xiàn)軟電話的基礎(chǔ)功能。這篇文章主要介紹了windos10環(huán)境下編譯python3版pjsua庫,需要的朋友可以參考下
    2021-10-10
  • Tensorflow 合并通道及加載子模型的方法

    Tensorflow 合并通道及加載子模型的方法

    今天小編就為大家分享一篇Tensorflow 合并通道及加載子模型的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

吴堡县| 仙游县| 林芝县| 河源市| 定州市| 大丰市| 济源市| 鄯善县| 宕昌县| 禄丰县| 宁都县| 大悟县| 定兴县| 五华县| 长宁县| 景东| 郧西县| 东阿县| 扎囊县| 临夏市| 丹棱县| 军事| 连平县| 颍上县| 高邑县| 石嘴山市| 行唐县| 望城县| 新干县| 广昌县| 大姚县| 昌江| 南汇区| 莱州市| 上犹县| 台北市| 陵川县| 七台河市| 馆陶县| 泰兴市| 常山县|