中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

keras怎么實現權重保存和權重載入

發布時間:2020-07-22 17:10:26 來源:億速云 閱讀:399 作者:小豬 欄目:開發技術

這篇文章主要為大家展示了keras怎么實現權重保存和權重載入,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

如果需要全部權重載入,直接使用權重載入方式

model.save_weights('./weigths.h6')
model2.load_weights('./weigths.h6')

但是有時候你只需要載入部分權重

所以你可以這樣操作

首先,為所有層命名,在層中直接加入方法 name='layer1'

第二,使用,將你不需要載入權重的值更改名字。

最后,載入權重。

x=BatchNormalization(axis=channel_axis,name='layer2')(x)
 
model2.layers[-1].name='pred'
model2.load_weights('./weigths.h6',by_name=True)

上面的代碼是對應的操作,這里我除了最后一層,其他層我都加載了權重,記住,by_name 必須賦值為True 這樣才能夠按照名稱對應賦值權重。

注意:兩個模型結構必須一樣,不然可能出問題

補充知識:Keras中保存和加載權重及模型結構

1. 保存和加載模型結構

(1)保存為JSON字串

json_string = model.to_json()

(2)從JSON字串重構模型

from keras.models import model_from_json
model = model_from_json(json_string)

(3)保存為YAML字串

yaml_string = model.to_yaml()

(4)從YAML字串重構模型

model = model_from_yaml(yaml_string)

2. 保存和加載模型權重(參數)

from keras.models import load_model
 
# 創建HDF5文件'my_model.h6',保存模型參數
model.save('my_model.h6')
 
# 加載模型參數
load_model('my_model.h6')

2.1 處理已保存模型中的自定義層(或其他自定義對象)

如果要加載的模型包含自定義層或其他自定義類或函數,則可以通過 custom_objects 參數將它們傳遞給加載機制:

from keras.models import load_model
 
# 假設你的模型包含一個 AttentionLayer 類的實例
model = load_model('my_model.h6', custom_objects={'AttentionLayer': AttentionLayer})

或者,你可以使用 自定義對象作用域:

from keras.utils import CustomObjectScope
 
with CustomObjectScope({'AttentionLayer': AttentionLayer}):
 model = load_model('my_model.h6')

自定義對象的處理與 load_model, model_from_json, model_from_yaml 的工作方式相同:

from keras.models import model_from_json

model = model_from_json(json_string, custom_objects={'AttentionLayer': AttentionLayer})

2019年6月1號更新:

更詳細的使用方法:

如何保存Keras模型?

(1)一個HDF5文件即保存模型的結構又保存模型的權重

我們不推薦使用pickle或cPickle來保存Keras模型。

你可以使用model.save(filepath)將Keras模型和權重保存在一個HDF5文件中,該文件將包含:

模型的結構,以便重構該模型

模型的權重

訓練配置(損失函數,優化器等)

優化器的狀態,以便于從上次訓練中斷的地方開始

使用keras.models.load_model(filepath)來重新實例化你的模型,如果文件中存儲了訓練配置的話,該函數還會同時完成模型的編譯。

例子:

from keras.models import load_model
 
model.save('my_model.h6') # creates a HDF5 file 'my_model.h6'
del model # deletes the existing model
 
# returns a compiled model
# identical to the previous one
model = load_model('my_model.h6')

(2)只保存模型的結構

如果你只是希望保存模型的結構,而不包含其權重或配置信息,可以使用:

# save as JSON
json_string = model.to_json()
 
# save as YAML
yaml_string = model.to_yaml()

這項操作將把模型序列化為json或yaml文件,這些文件對人而言也是友好的,如果需要的話你甚至可以手動打開這些文件并進行編輯。

當然,你也可以從保存好的json文件或yaml文件中載入模型:

# model reconstruction from JSON:
from keras.models import model_from_json
model = model_from_json(json_string)
 
# model reconstruction from YAML
model = model_from_yaml(yaml_string)

(3)只保存模型的權重

如果需要保存模型的權重,可通過下面的代碼利用HDF5進行保存。注意,在使用前需要確保你已安裝了HDF5和其Python庫h6py。

model.save_weights('my_model_weights.h6')

如果你需要在代碼中初始化一個完全相同的模型,請使用:

model.load_weights('my_model_weights.h6')

如果你需要加載權重到不同的網絡結構(有些層一樣)中,例如fine-tune或transfer-learning,你可以通過層名字來加載模型:

model.load_weights('my_model_weights.h6', by_name=True)

例如:

"""
假如原模型為:
 model = Sequential()
 model.add(Dense(2, input_dim=3, name="dense_1"))
 model.add(Dense(3, name="dense_2"))
 ...
 model.save_weights(fname)
"""
# new model
model = Sequential()
model.add(Dense(2, input_dim=3, name="dense_1")) # will be loaded
model.add(Dense(10, name="new_dense")) # will not be loaded
 
# load weights from first model; will only affect the first layer, dense_1.
model.load_weights(fname, by_name=True)

以上就是關于keras怎么實現權重保存和權重載入的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荥阳市| 泌阳县| 威海市| 华亭县| 方山县| 宿州市| 房产| 无极县| 衡阳县| 拜城县| 周至县| 石城县| 霍城县| 海宁市| 达孜县| 馆陶县| 福建省| 长泰县| 邛崃市| 白朗县| 大厂| 博客| 本溪| 沙湾县| 错那县| 英吉沙县| 南木林县| 安国市| 吉木乃县| 镇巴县| 胶南市| 民县| 和顺县| 区。| 祁阳县| 明光市| 沁水县| 海阳市| 涞源县| 嘉黎县| 广饶县|