您观察到错误是因为 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>
进行此更改后,我又遇到了一个错误:“传递给 '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 () {
到
$(document).on('click', '#predict-button', async function() {
改变
$("#select-file-image").change(function() {
到
$(document).on('change', '#select-file-image', function() {