Keras 多GPU下模型和引數儲存Modelcheckpoint callback報錯問題以及在單GPU/CPU下載入
儲存
多GPU下無法直接儲存多GPU模型結構和引數,而應該使用template model進行儲存
keras文件:To save the multi-gpu model, use .save(fname) or .save_weights(fname) with the template model (the argument you passed to multi_gpu_model), rather than the model returned by multi_gpu_model.
model = get_model()
paralleled_model=multi_gpu_model(model1,gpus=num_gpu)
paralleled_model.compile ()
paralleled_model.fit()
model.save() # 用template model 儲存引數
Modelcheckpoint callback 報錯
Modelchecpoint callback函式無法呼叫也是因為儲存時呼叫的是paralleled_model.save()導致的。
解決方法一:在modelcheckpoint裡引數加上save_weights_only=True
後,只會儲存模型權重,但是儲存的模型只能在同樣數量的GPU上載入,而沒辦法再單GPU下載入。
解決方法二:自定義Callback函式,將callback函式中的paralle model 置為 template model
class ParallelModelCheckpoint(ModelCheckpoint):
def __init__(self,model,filepath, monitor='val_loss', 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)
check_point = ParallelModelCheckpoint(single_model ,'best.hd5')
載入
多GPU下儲存的權重無法在單GPU/CPU下執行,預測時可以建立多GPU模型後先匯入多GPU的權重而用template model 進行predict:
model = get_model()
paralleled_model=multi_gpu_model(model,gpus=num_gpu)
paralleled_model.load_weights("weights_multi_gpu.h5") # 此時model也自動載入了權重,可用model進行預測
model.predict()
相關推薦
Keras 多GPU下模型和引數儲存Modelcheckpoint callback報錯問題以及在單GPU/CPU下載入
儲存 多GPU下無法直接儲存多GPU模型結構和引數,而應該使用template model進行儲存 keras文件:To save the multi-gpu model, use .save(fname) or .save_weights(fna
keras、pytorch模型和引數的儲存
這篇博文主要簡單介紹深度學習框架keras和pytorch的模型儲存方法和模型引數儲存方法。 keras: import keras form keras.models import load_model,Sequential,Model,Input f
Keras如何儲存和載入訓練好的模型和引數
1,儲存模型: my_model = create_model_function( ...... ) my_model.compile( ...... ) my_model.fit( ...... ) model_name . save( filepath, ove
Python機器學習筆記:深入理解Keras中序貫模型和函式模型
先從sklearn說起吧,如果學習了sklearn的話,那麼學習Keras相對來說比較容易。為什麼這樣說呢? 我們首先比較一下sklearn的機器學習大致使用流程和Keras的大致使用流程: sklearn的機器學習使用流程: 1 2 3 4
PyTorch學習:載入模型和引數
pytorch的模型和引數是分開的,可以分別儲存或載入模型和引數。 pytorch有兩種模型儲存方式: 一、儲存整個神經網路的的結構資訊和模型引數資訊,save的物件是網路net 二、只儲存神經網路的訓練模型引數,save的物件是net.state_dict() 對應
安裝Pycharm和Anaconda報錯問題(包含目錄下只顯示Anaconda Prompt的情況等)
這幾天學習python的過程中,安裝和使用Pycharm or Anaconda出現的問題,結合自己親身體驗和網路搜尋(網路上嘗試過一些小夥伴的方法,覺得還不錯有整理進來,謝謝小夥伴的分享。)總結如下幾個方面: 1、安裝過程中出現failed to create anacoda men
maven開發下tomcat部署war包,沒有報錯但是訪問不了站點任何資源和介面。
就這樣一直載入這,沒有任何反應,控制檯也不報任何錯誤。困擾了許久,百度無果。只能自己慢慢的一步一步的找問題的根源。 先發現將SpringMvc的前端控制器配置刪除後,就能夠訪問站點。但是不配置前端控制器,就意味著任何請求都進不去。 無奈只能開啟SpringMvc的配置檔案
tiny6410的Qt4的移植和第一個Qt4軟體的執行以及如何在qtopia下執行自己的qt4程式
開發環境:fedora9 linux-2.6.38 arm-linux-gcc 4.5.1 基於tiny6410的軟硬體環境,tslib用的開發板檔案系統自帶的,用的一線校準,基本上是按照《M
在Ubuntu下安裝和解除安裝網易雲音樂以及出現的問題
1.網易雲音樂 開啟網易雲連結,點選Lunix版本,選擇合適的版本檢視其下載的deb壓縮包所在的位置2.開啟終端,輸入 sudo dpkg -i /home/chen/下載/netease-cloud-music_1.1.0_amd_ubuntu.deb在具體下載的過程中要
關於在ubuntu下eclipse中c++11支援和編譯執行c++11報錯的解決方法
最近準備升級專案中的c++執行緒部分程式碼用c++11簡單重構一下,結果測試demo直接就報錯~ 百度和谷歌了一部分還是沒有解決這個問題~ 最後經過研究eclipse的自動編譯~終於搞定了~ 首先按照網上說的~ http://hkllzh.iteye.com/blog/1
linux下weblogic11g成功安裝後,啟動報錯Getting boot identity from user
tro ace author reason tac ica ons pst pri <2015-7-1 下午05時46分33秒 CST> <Info> <Management> <BEA-141107> <Versi
CentOS7下使用rpm-gpg-key-epel-6報錯解決方法
centos7今天遇到一個在CentOS7下用rpm-gpg-key-epel-6的文件安裝yum install gridengine-6.2u5-10.el6.4.x86_64 gridengine-devel-6.2u5-10.el6.4.x86_64 gridengine-execd-6.2u5-10
linux centos環境下,perl使用DBD::Oracle遇到報錯Can't locate DBDOracle.pm in @INC 的解決辦法
acp right tps 名稱 ica 補充 str htm 遠程數據庫 前言 接手前輩的項目,沒有接觸、安裝、使用過perl和DBD::Oracle,也沒有相關的文檔記錄,茫茫然不知所措~~。一開始發現這個問題,就想著迅速解決,就直接在google上搜報錯信息,搜索的
面對對象之私有屬性,以及單、雙下劃線 | Pythoon
指定 src 防止 什麽 mage 對象 class .com img # 在很多程序中會遇到__name,_name的標識符,在類中,如果屬性帶有雙 # 下劃線,表示私有屬性,通俗的講,就是不能在類命名空間外被直接調用,但是 # 可以通過方法來調用。 #
RN關於Windows電腦上創建 移植到Mac 和 react-native-vector-icons報錯
span fail 目錄 關於 src 方法 pes gets error: 1 進入項目更新npm 正如jerry指出的那樣,這是NPM中的一個錯誤。現在有一個修復程序可用。您可以使用更新NPM npm i -g npm。刪除了React Native,npm rem
多線程中,ResultSet為空,報錯空指針
resultset JD 沖突 查詢語句 查詢 多個 通過 res 好的 最近在數據庫查詢數據時,由於數據量太大,使用了多線程,通過線程池建了好幾個線程,然後調用了一個封裝好的jdbc查詢語句。 結果在多線程中,ResultSet報錯空指針。 仔細查閱後,才發現多個線程訪問
Ubuntu系統下,pip3安裝python3的pymysql包 報錯的問題
sudo pip3 list 檢視安裝的包列表 如上圖, pip升級到18.1版本. 使用pip3 出現以下錯誤: Traceback (most recent call last): File “/usr/bin/pip3”, line 9, in from pip
關於在JSP中寫【if】和【else】語句報錯Syntax error on token "else", delete this token
這裡轉載一篇文章:https://blog.csdn.net/sinat_37062120/article/details/79208949 jsp中插入java程式碼 <%if (***)%> <%=***%> <%else %> <%=***%&
dotnetcore ef 呼叫多個數據庫時使用者命令執行操作報錯
dotnetcore ef 呼叫多個數據庫時使用者命令執行操作報錯 1、多個DbContext 時報錯: 報錯: More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for
執行儲存過程,報錯提示 找不到儲存過程
原因: SQL Server 客戶端, 在連線到 SQL Server 資料庫以後。會自動讀取 資料庫的 資料字典資訊。也就是 當前資料庫,有哪些表/欄位/檢視/儲存過程等基礎資訊。儲存在客戶端的記憶體裡面。這樣。當你在客戶端輸入 SQL 語句的時候,輸入 表名字.會自動彈出 這個表的欄位列表,