我有一個 .h5 文件,其中僅包含使用 Mask-RCNN 和 Keras 框架訓練來執行對象檢測的模型的權重。我想在 Python 中使用 Tensorflow + Keras 加載此模型,并在自定義圖像上運行對象檢測。我正在使用 Python 3.8.5,并且嘗試使用該keras.models.load_model()函數加載此模型,但在嘗試這樣做時收到錯誤:ValueError:在配置文件中找不到模型據我了解,這意味著 .h5 文件僅保存模型權重,為了利用這些權重,我必須將它們加載到具有相同架構的模型中。我使用 h5py python 模塊來查看 .h5 文件內的組,試圖了解其架構,但我只看到如下所示的鍵:(還有很多很多類似的鍵,但這些是對我看到的鑰匙)“activation_1”、“add_32”、“bn2a_branch1”、“res5c_out”等。這些組有時具有數據集成員,訪問這些成員時,會提供類似于以下內容的信息:<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"\>我可以假設一些東西,比如“activation_1”可能對應于激活層,但其余的層似乎與我在構建時習慣看到/使用的 Dense、LeakyReLU、BatchNormalization 層等無關一個模型。我需要在這里做什么?如何從僅包含模型權重的 .h5 文件確定 Keras + Mask-RCNN 模型的架構?謝謝,非常感謝任何幫助!
3 回答

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

呼如林
TA貢獻1798條經驗 獲得超3個贊
嘗試將模型加載到另一個變量中,然后調用 model.summary() 函數
model_2?=?load_model('old_model.h5') model_2.summary()

慕斯709654
TA貢獻1840條經驗 獲得超5個贊
您也許能夠從獲得的輸出中收集一些信息。例如
<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"\>
是批量歸一化層。我通過編寫手動轉換代碼從 pytorch 轉換為tensorflow 知道了這一點。
也許您可以構建自己的測試網絡,提取權重并讀取結構,看看這些結構與您已知的層是什么樣子,然后與您未知的模型結構進行比較?
添加回答
舉報
0/150
提交
取消