我使用 tensorflowjs-converter 將在 ImageNet 上預訓練的 EfficientNet 模型轉換為 tensorflow-js。當我嘗試將模型加載到我的腳本中時,它會嘗試使用初始化程序初始化權重,這些初始化程序未在 tfjs 中實現。但是,沒有必要初始化權重,因為模型已經過預訓練并且權重也進行了轉換。轉換后的模型在這里:https : //github.com/paulsp94/tfjs_efficientnet3_imagenet這是問題的 CodePen 示例:https ://codepen.io/paulsp94/pen/XLNdJqconst start = async () => { efficientNetURL = 'https://raw.githubusercontent.com/paulsp94/tfjs_efficientnet3_imagenet/master/model.json'; console.log("Load Model"); let model; try { model = await tf.loadLayersModel(efficientNetURL, {strict: true}); console.log(model.summary()); } catch (error) { console.error(error); }};start()您必須打開瀏覽器的控制臺,才能看到正確的錯誤。錯誤是:錯誤:“未知初始化程序:EfficientConv2DKernelInitializer。這可能是由于以下原因之一:1. 初始化程序是在 Python 中定義的,在這種情況下,需要將其移植到 TensorFlow.js 或您的 JavaScript 代碼中。2. 自定義初始化程序在 JavaScript 中定義,但未使用 tf.serialization.registerClass() 正確注冊。”更新: 雖然我可以繞過初始化器,但將所有未知的初始化器替換為例如 Zeros 初始化器。我遇到了當前無法解決的自定義圖層(Swish 圖層)的另一個問題。
如何在不初始化權重的情況下導入訓練模型
開心每一天1111
2021-06-27 17:19:58