Tensorflowjs : Uncaught (in promise) TypeError: Cannot read property 'length' of undefined

Tensorflowjs : Uncaught (in promise) TypeError: Cannot read property 'length' of undefined

这是我在加载页面后对从 DOM 抓取的图像进行预处理的最新问题。我们已经做到了用户可以加载图像的位置,当他们点击我们的按钮来识别图像时,它会经过预处理图像的过程以被我们的模型接受,打印出 Tensor object 值然后当它到达 model.predict 行时,它会因标题中的错误而中断; Uncaught (in promise) TypeError: Cannot read property 'length' of undefined 这个在最底部; at HTMLDivElement.<anonymous> (main.js:39)

但是,它所讨论的 HTMLDivElement 被定义为每次单击识别按钮时我都会在控制台记录它以进行完整性检查; User Image: <img src="data:image/png;base64,..." class="user_pic">

这是我的张量 Object,以详细格式打印:

Tensor
  dtype: float32
  rank: 4
  shape: [1,200,200,3]
  values:
    [[[[56 , 105, 11 ],
       [53 , 101, 9  ],
       [49 , 97 , 8  ],
       ...,
       [91 , 151, 99 ],
       [92 , 152, 101],
       [91 , 151, 99 ]],

      [[56 , 102, 12 ],
       [52 , 98 , 9  ],
       [48 , 93 , 8  ],
       ...,
       [94 , 154, 103],
       [95 , 155, 104],
       [94 , 154, 103]],

      [[53 , 99 , 11 ],
       [51 , 97 , 11 ],
       [44 , 90 , 7  ],
       ...,
       [92 , 151, 103],
       [93 , 152, 104],
       [94 , 153, 105]],

      ...
      [[21 , 61 , 8  ],
       [21 , 61 , 8  ],
       [21 , 61 , 8  ],
       ...,
       [28 , 88 , 1  ],
       [36 , 93 , 4  ],
       [44 , 99 , 9  ]],

      [[22 , 62 , 9  ],
       [22 , 62 , 9  ],
       [22 , 62 , 9  ],
       ...,
       [29 , 92 , 3  ],
       [29 , 89 , 1  ],
       [40 , 98 , 7  ]],

      [[22 , 62 , 10 ],
       [22 , 62 , 10 ],
       [22 , 62 , 10 ],
       ...,
       [32 , 97 , 7  ],
       [30 , 92 , 3  ],
       [34 , 94 , 4  ]]]]

另一个奇怪的部分是,当我将张量图像处理为可接受的格式时,我将其分配给一个变量,但是当该变量是后来调用,是undefined

下面的完整错误:

Uncaught (in promise) TypeError: Cannot read property 'length' of undefined
    at Fm (tfjs@latest:2)
    at e.predict (tfjs@latest:2)
    at e.predict (tfjs@latest:2)
    at HTMLDivElement.<anonymous> (main.js:39)

下面是我的代码

let identify = document.querySelector('.identify')
if (identify) {
    identify.addEventListener('click', async function () {
        event.preventDefault()

        // Just a promise but is the model I need. Checked the layers and it matches up
        const model = await tf.loadLayersModel('model_json')
        console.log('This is your model: ', model)

        let user_pic = document.querySelector('.user_pic')
        console.log('User Image: ', user_pic)

        // Preprocessing is done here as it wasn't working when I saved it to a variable
        prediction = model.predict(
            tf.browser.fromPixels(user_pic).cast('float32').expandDims().print(true), { batchSize: 4 })

        console.log('This is your model: ', model, 'This is your prediction: ', prediction)
    })

我很好奇是否其他人 运行 了解此问题并了解如何解决它。我对 Tensorflow.js 很陌生,我能找到的并不是我需要的。如果有人能帮忙,非常感谢

您传递给 model.predict 的是 print 返回的内容,而不是张量本身

prediction = model.predict(
    tf.browser.fromPixels(user_pic).cast('float32').expandDims())