慕標(biāo)琳琳
2023-12-12 14:57:37
我有一個(gè) .h5 文件,其中僅包含使用 Mask-RCNN 和 Keras 框架訓(xùn)練來執(zhí)行對(duì)象檢測的模型的權(quán)重。我想在 Python 中使用 Tensorflow + Keras 加載此模型,并在自定義圖像上運(yùn)行對(duì)象檢測。我正在使用 Python 3.8.5,并且嘗試使用該keras.models.load_model()函數(shù)加載此模型,但在嘗試這樣做時(shí)收到錯(cuò)誤:ValueError:在配置文件中找不到模型據(jù)我了解,這意味著 .h5 文件僅保存模型權(quán)重,為了利用這些權(quán)重,我必須將它們加載到具有相同架構(gòu)的模型中。我使用 h5py python 模塊來查看 .h5 文件內(nèi)的組,試圖了解其架構(gòu),但我只看到如下所示的鍵:(還有很多很多類似的鍵,但這些是對(duì)我看到的鑰匙)“activation_1”、“add_32”、“bn2a_branch1”、“res5c_out”等。這些組有時(shí)具有數(shù)據(jù)集成員,訪問這些成員時(shí),會(huì)提供類似于以下內(nèi)容的信息:<HDF5 group "/bn4v_branch2a/bn4v_branch2a" (4 members)\>
<HDF5 dataset "beta:0": shape (256,), type "<f4"\>
<HDF5 dataset "gamma:0": shape (256,), type "<f4"\>
<HDF5 dataset "moving_mean:0": shape (256,), type "<f4"\>
<HDF5 dataset "moving_variance:0": shape (256,), type "<f4"\>我可以假設(shè)一些東西,比如“activation_1”可能對(duì)應(yīng)于激活層,但其余的層似乎與我在構(gòu)建時(shí)習(xí)慣看到/使用的 Dense、LeakyReLU、BatchNormalization 層等無關(guān)一個(gè)模型。我需要在這里做什么?如何從僅包含模型權(quán)重的 .h5 文件確定 Keras + Mask-RCNN 模型的架構(gòu)?謝謝,非常感謝任何幫助!
3 回答

aluckdog
TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以在根組屬性的“model_config”中找到它。只需檢查:
f = h5py.File(your_model_name, 'r') f.attrs.get('model_config')
在那里你會(huì)找到所有圖層類的名稱、形狀、激活函數(shù)等。

呼如林
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
嘗試將模型加載到另一個(gè)變量中,然后調(diào)用 model.summary() 函數(shù)
model_2?=?load_model('old_model.h5') model_2.summary()

慕神8447489
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

慕斯709654
TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
您也許能夠從獲得的輸出中收集一些信息。例如
<HDF5 group "/bn4v_branch2a/bn4v_branch2a" (4 members)\> <HDF5 dataset "beta:0": shape (256,), type "<f4"\> <HDF5 dataset "gamma:0": shape (256,), type "<f4"\> <HDF5 dataset "moving_mean:0": shape (256,), type "<f4"\> <HDF5 dataset "moving_variance:0": shape (256,), type "<f4"\>
是批量歸一化層。我通過編寫手動(dòng)轉(zhuǎn)換代碼從 pytorch 轉(zhuǎn)換為tensorflow 知道了這一點(diǎn)。
也許您可以構(gòu)建自己的測試網(wǎng)絡(luò),提取權(quán)重并讀取結(jié)構(gòu),看看這些結(jié)構(gòu)與您已知的層是什么樣子,然后與您未知的模型結(jié)構(gòu)進(jìn)行比較?
添加回答
舉報(bào)
0/150
提交
取消