我使用 tensorflowjs-converter 将在 ImageNet 上预训练的 EfficientNet 模型转换为 tensorflow-js。当我尝试将模型加载到我的脚本中时,它会尝试使用初始化程序初始化权重,这些初始化程序未在 tfjs 中实现。但是,没有必要初始化权重,因为模型已经过预训练并且权重也进行了转换。转换后的模型在这里:https : //github.com/paulsp94/tfjs_efficientnet3_imagenet
这是问题的 CodePen 示例:https ://codepen.io/paulsp94/pen/XLNdJq
const 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 图层)的另一个问题。
ITMISS
相关分类