使用Keras 實(shí)現(xiàn)查看model weights .h5 文件的內(nèi)容
Keras的模型是用hdf5存儲(chǔ)的,如果想要查看模型,keras提供了get_weights的函數(shù)可以查看:
for layer in model.layers: weights = layer.get_weights() # list of numpy array
而通過(guò)hdf5模塊也可以讀?。篽df5的數(shù)據(jù)結(jié)構(gòu)主要是File - Group - Dataset三級(jí),具體操作API可以看官方文檔。weights的tensor保存在Dataset的value中,而每一集都會(huì)有attrs保存各網(wǎng)絡(luò)層的屬性:
import h5py
def print_keras_wegiths(weight_file_path):
f = h5py.File(weight_file_path) # 讀取weights h5文件返回File類(lèi)
try:
if len(f.attrs.items()):
print("{} contains: ".format(weight_file_path))
print("Root attributes:")
for key, value in f.attrs.items():
print(" {}: {}".format(key, value)) # 輸出儲(chǔ)存在File類(lèi)中的attrs信息,一般是各層的名稱(chēng)
for layer, g in f.items(): # 讀取各層的名稱(chēng)以及包含層信息的Group類(lèi)
print(" {}".format(layer))
print(" Attributes:")
for key, value in g.attrs.items(): # 輸出儲(chǔ)存在Group類(lèi)中的attrs信息,一般是各層的weights和bias及他們的名稱(chēng)
print(" {}: {}".format(key, value))
print(" Dataset:")
for name, d in g.items(): # 讀取各層儲(chǔ)存具體信息的Dataset類(lèi)
print(" {}: {}".format(name, d.value.shape)) # 輸出儲(chǔ)存在Dataset中的層名稱(chēng)和權(quán)重,也可以打印dataset的attrs,但是keras中是空的
print(" {}: {}".format(name. d.value))
finally:
f.close()
而如果想修改某個(gè)值,則需要通過(guò)新建File類(lèi),然后用create_group, create_dataset函數(shù)將信息重新寫(xiě)入,具體操作可以查看這篇文章
補(bǔ)充知識(shí):keras load model 并保存特定層 (pop) 的權(quán)重save new_model
有時(shí)候我們保存模型(save model),會(huì)保存整個(gè)模型輸入到輸出的權(quán)重,如果,我們不想保存后幾層的參數(shù),保存成新的模型。
import keras from keras.models import Model, load_model from keras.layers import Input, Dense from keras.optimizers import RMSprop import numpy as np
創(chuàng)建原始模型并保存權(quán)重
inputs = Input((1,))
dense_1 = Dense(10, activation='relu')(inputs)
dense_2 = Dense(10, activation='relu')(dense_1)
dense_3 = Dense(10, activation='relu')(dense_2)
outputs = Dense(10)(dense_3)
model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=RMSprop(), loss='mse')
model.save('test.h5')
加載模型并對(duì)模型進(jìn)行調(diào)整
loaded_model = load_model('test.h5')
loaded_model.layers.pop()
loaded_model.layers.pop()
此處去掉了最后兩層--dense_3, dense_2。
創(chuàng)建新的model并加載修改后的模型
new_model = Model(inputs=inputs, outputs=dense_1)
new_model.compile(optimizer=RMSprop(), loss='mse')
new_model.set_weights(loaded_model.get_weights())
new_model.summary()
new_model.save('test_complete.h5')
以上這篇使用Keras 實(shí)現(xiàn)查看model weights .h5 文件的內(nèi)容就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用Turtle繪畫(huà)簡(jiǎn)單圖形
這篇文章主要介紹了Python利用Turtle繪畫(huà)簡(jiǎn)單圖形,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07
python實(shí)現(xiàn)合并兩個(gè)排序的鏈表
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)合并兩個(gè)排序的鏈表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
Python結(jié)合Sprak實(shí)現(xiàn)計(jì)算曲線(xiàn)與X軸上方的面積
這篇文章主要介紹了Python結(jié)合Sprak實(shí)現(xiàn)計(jì)算曲線(xiàn)與X軸上方的面積,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02
tensorflow 使用flags定義命令行參數(shù)的方法
本篇文章主要介紹了tensorflow 使用flags定義命令行參數(shù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python使用QQ郵箱發(fā)送Email的方法實(shí)例
實(shí)際開(kāi)發(fā)過(guò)程中使用到郵箱的概率很高,那么如何借助python使用qq郵箱發(fā)送郵件呢?正好最近工作遇到這個(gè)需求,所以想著把方法分享出來(lái)方便大家,所以這篇文章主要介紹了Python使用QQ郵箱發(fā)送Email的實(shí)現(xiàn)方法,需要的朋友可以參考。2017-02-02
實(shí)例詳解Python中的numpy.abs和abs函數(shù)
Numpy是python中最有用的工具之一,它可以有效地處理大容量數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Python中numpy.abs和abs函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
解決Django Haystack全文檢索為空的問(wèn)題
這篇文章主要介紹了解決Django Haystack全文檢索為空的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python機(jī)器學(xué)習(xí)pytorch交叉熵?fù)p失函數(shù)的深刻理解
這篇文章主要為大家介紹了Python機(jī)器學(xué)習(xí)中對(duì)交叉熵?fù)p失函數(shù)的深刻理解,文中作出了詳細(xì)易懂的講解,有需要的朋友可以借鑒參考下希望能夠有所幫助2021-10-10

