在tensorflow.js中,建议重塑张量的方法是什么?

时间:2019-01-22 15:33:44

标签: python tensorflow tensorflow.js

我目前正在通过tensorflow.js在浏览器上运行经过keras训练的模型。由于传入的所有数据都是该尺寸,因此在进入模型之前,我必须将图像尺寸减小到48x48。我打算使用以下方法将网络摄像头快照的大小减小到48x48:

let imgclone = tf.image.resizeBilinear(imgmod, [48,48], true).toFloat(); 

这使我可以正确地绘制到画布上,并在较小的画布上获取实时缩小尺寸的网络摄像头流。然后,我将快照传递给我的模型,并且出现以下错误:

  

期望conv2d_1_input具有形状[null,48,48,1]但得到数组   形状为[1,48,48,3]。

所以我不确定在使用tensorflow.js时获得最终成形张量的正确方法。我确实尝试使用 tf.reshape(preprocedimg,[null,48,48,1]),但是当然这只会修改形状并提供我的尺寸不匹配的错误。

打算继续搜寻Google,但我也想在这里发布。您将能够提供的任何信息将不胜感激!

2 个答案:

答案 0 :(得分:1)

由于要获得形状为48、48、1的张量,因此可以使用tf.slice

  tensor.slice([0,0,0], [48, 48,1])

答案 1 :(得分:0)

我有同样的问题。我只想分享我找到的解决方案。

tf.browser.fromPixels(像素,numChannels?) numChannels默认为3(RGB),将其更改为1,如下所示。

let tensor = tf.fromPixels(image,1)

希望对您也有帮助。

TensorFlow文档(https://js.tensorflow.org/api/latest/#browser.fromPixels