使用Keras预先训练的接收v3/Exception模型时预测不正确
我正试图让预先训练好的Keras接收v3/Exception模型在tensorflow.js中工作。模型的负载非常好,但是输出预测远远不正确(参见InceptionV3预测照片) 我还保存/转换了ResNet50模型,该模型运行良好 这些模型目前是否与tensorflow.js完全不兼容?还是我的代码有问题 模型通过以下方式保存/转换:使用Keras预先训练的接收v3/Exception模型时预测不正确,keras,deep-learning,tensorflow.js,pre-trained-model,Keras,Deep Learning,Tensorflow.js,Pre Trained Model,我正试图让预先训练好的Keras接收v3/Exception模型在tensorflow.js中工作。模型的负载非常好,但是输出预测远远不正确(参见InceptionV3预测照片) 我还保存/转换了ResNet50模型,该模型运行良好 这些模型目前是否与tensorflow.js完全不兼容?还是我的代码有问题 模型通过以下方式保存/转换: from keras.applications import inception_v3 model = inception_v3.InceptionV3(inc
from keras.applications import inception_v3
model = inception_v3.InceptionV3(include_top=True, weights='imagenet')
model.save("InceptionV3.h5", False)
tensorflowjs_converter --input_format=keras InceptionV3.h5 InceptionV3
此处提供代码(angular应用程序):
重要的部分是:
版本:
- 铬:72.0.3626.109
- @张量流/tfjs@1.0.0-阿尔法3
我已经解决了这个问题,以备将来参考。结果是,在将图像输入模型之前,我没有将图像标准化到[-1,1]范围内 但是,我不知道为什么ResNet50没有标准化就可以工作 规范化代码:
let tensor = tf.browser.fromPixels(canvas, number_channels);
let normalizationOffset = tf.scalar(127.5);
var normalized = tensor.toFloat().sub(normalizationOffset).div(normalizationOffset);
var batched = resized.reshape([1, imgSize, imgSize, 3]);
var output = model.predict(batched) as any;
您可能希望添加其他标签,如
keras
,预训练模式
,深度学习
,以增加获得响应的机会。只是好奇:您是否计划在browser或node.js中使用InceptionV3模式?该模型的层数相当大(>300),在浏览器中可能运行速度不够快。我尝试将InceptionV3转换为TF.js格式,并将其加载到TF.js(Node.js和浏览器)。(Python)Keras和JavaScript的结果确实不同。但差异大多很小(感谢大家的关注!在我的例子中,TF.js的预测结果远远不正确,TF.js的前三名结果是:(扁形虫,扁形虫“,1),(水壶,水壶”,2.24e-18),(双筒望远镜,望远镜,望远镜,歌剧眼镜”,1.84e-22),而当我使用Keras进行测试时,前三名结果是:('tabby',0.44),(‘埃及猫’,0.25),(‘老虎猫’,0.062)如果您能够接收到准确的预测,则我转换模型的方式或图像输入过程一定有问题。这可能是由于TF.js的webGL后端处理1x1 conv2d内核的方式存在错误。请参阅上的跟踪问题,对于由此带来的不便,深表歉意。我们将尽快修复它。