【发布时间】:2019-11-02 05:27:53
【问题描述】:
我使用 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() 正确注册。"
更新: 虽然我可以通过用例如替换所有未知的初始化程序来绕过初始化程序。零初始化器。我遇到了当前无法解决的自定义图层(Swish 图层)的另一个问题。
【问题讨论】:
标签: javascript tensorflow tensorflowjs-converter tensorflowjs