【问题标题】:ValueError: Cannot feed value of shape (1, 50, 50, 3) for Tensor 'input/X:0', which has shape '(?, 50, 50, 1)'ValueError:无法为张量“输入/X:0”提供形状(1、50、50、3)的值,其形状为“(?、50、50、1)”
【发布时间】:2020-05-01 14:30:47
【问题描述】:

我的模型输入形状是 (50,50,1) 我通过以下方式获取框架:

 cv2.VideoCapture(0).read()

当我使用 np.reshape() 函数时,它不会将其重塑为所需的形状。

sized_frame = (cv2.resize(frame, (50,50)))

cv2.waitKey(0)
img_data = np.array(photo)
data = tf.reshape(img_data, (1,50,50,3))
model_out = model.predict([img_data])[0]
print(model_out)
if np.argmax(model_out) == 1:
    str_label = 'Dog'
else:
    str_label = 'Cat'

return str_label

这是我得到的错误:

ValueError: Cannot feed value of shape (1, 50, 50, 3) for Tensor 'input/X:0', which has shape '(?, 50, 50, 1)'

【问题讨论】:

  • 看起来模型是在灰度图像上训练的。
  • 您好,能否请您提供神经网络的定义。如果是 Keras,只需 model_out.summary()

标签: python numpy tensorflow machine-learning cv2


【解决方案1】:

以下代码应该可以解决您的错误

gray = cv2.cvtColor(photo, cv2.COLOR_BGR2GRAY)
img_data = np.array(gray)
data = tf.reshape(img_data, (1,50,50,1))
model_out = model.predict(img_data)[0]

假设您在灰度图像上进行过训练

【讨论】:

  • 得到了这个错误:'ValueError: 不能用 2500 个元素重塑一个张量来为 'Reshape'(操作:'Reshape')塑造 [1,50,50,3](7500 个元素)与输入形状:[50,50],[4],输入张量计算为部分形状:输入[1] = [1,50,50,3]。 @CAFEBABE
  • 抱歉复制粘贴错误。固定它应该在最后是1。请注意,这是假设您使用灰度图像训练了 NN
  • 嘿,按照你说的进行了更改,但现在出现了不同的错误:'ValueError: Cannot feed value of shape (1, 50, 50) for Tensor 'input/X:0', which has shape ' (?, 50, 50, 1)'' @CAFEBABE
  • @GalNeystadt 忽略了 img_data 周围的 [ ...]。如果你能在你的问题中提供一个最小的无法示例,那将会很有帮助。
  • 我将提供所需的一切,您能否解释一下“最小无法示例”中的意思? @CAFEBABE
猜你喜欢
  • 2020-07-11
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 2021-08-14
  • 2018-10-06
  • 1970-01-01
相关资源
最近更新 更多