tf.loadModel不是函数

ABC*_*BCD 4 javascript python-3.x keras tensorflow

我正在Google Chrome中使用Keras MobileNet和TensorFlow.js对图像进行分类。当我运行代码时,我得到的tf.loadModel不是函数错误。我这样加载模型。

	model = await tf.loadModel('https://gogul09.github.io/models/mobilenet/model.json');
	model.predict();
Run Code Online (Sandbox Code Playgroud)

错误详情

Adr*_*gru 8

函数loadModel已重命名为loadLayersModel。


Man*_*han 7

您观察到错误是因为 tf.loadModel API 在最近版本的 tensorflow.js 中发生了变化。我可以通过在项目https://github.com/Gogul09/digit-recognizer-live 中进行以下更改来使预测工作:

index.html 中,将版本更改为 0.10.0 而不是最新的。

<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.10.0"></script>
Run Code Online (Sandbox Code Playgroud)

进行此更改后,我又遇到了一个错误:“传递给 'div' 的参数 'b' 必须是张量,但得到了数字。”

为了解决这个问题,在app.js 中,函数 preprocessCanvas() 将 tensor.div(255.0) 更改为

tensor.div(tf.scalar(255.0))

根据您使用的是 MLP 还是 CNN 模型,进行相应的更改。更改 js 文件后,重新加载页面。

对于这个项目https://github.com/Gogul09/mobile-net-projects,在对 tf js 版本进行硬编码后,预测不起作用,因为预测按钮的点击事件没有被触发。此外,对于上传图像。在mobile-net.js 中替换这些行后,预测工作。

改变

$("#predict-button").click(async function () {
Run Code Online (Sandbox Code Playgroud)

$(document).on('click', '#predict-button', async function() { 
Run Code Online (Sandbox Code Playgroud)

改变

$("#select-file-image").change(function() {
Run Code Online (Sandbox Code Playgroud)

$(document).on('change', '#select-file-image', function() {
Run Code Online (Sandbox Code Playgroud)