【问题标题】:Keras predict getting incorrect shape?Keras 预测得到不正确的形状?
【发布时间】:2018-08-08 16:03:55
【问题描述】:

我是 Keras 的新手,正在尝试测试我刚刚训练过的模型。

我正在使用 Tensorflow 后端和 Python 3。

但是,我输入的形状与 Keras 在错误中所说的形状完全不同。这是我的代码:

testnote = np.zeros((3,))
testnote[0] = 70
testnote[1] = 70
print(testnote.shape)
pred = model.predict(testnote)
print(pred)

对于 testnote 的形状,我的一致输出是“(3,)”,然后是我的预测行的错误:“ValueError:检查输入时出错:预期的 dense_1_input 具有形状 (3,),但得到的数组具有形状 ( 1,)"

当我刚刚确认形状是 (3,) 时,Keras 是如何将 testnote 读取为具有形状 (1,) 的?它是否对“形状”的含义使用某种不同的标准?我已经尝试过重塑和添加括号以及其他一些东西,但我真的不知道问题出在哪里。

对于其他上下文,该模型接收一个具有 3 个标量输入(代表音高、速度和乐器类别)的数组,并输出一个具有 1025 个标量输出的数组。我小心翼翼地不使用“维度”这个词,因为我认为这是我感到困惑的地方,而且从技术上讲,两者都只是一维。我确信我的模型存在很多问题,我必须在此之后解决这些问题。但是,我想让这个预测函数正常工作,这样我就可以了解我的输出是什么样的。

提前感谢您的帮助。

【问题讨论】:

  • 您能否提供一个演示问题的最小完整示例?

标签: python numpy tensorflow keras shape


【解决方案1】:

Keras Model 隐含地期望您的数据(作为 np array 传递)具有批量大小的维度。目前,您的模型将 testnote 解释为形状 1 的 3 个示例。尝试将批量维度添加到“testnote”,如下所示:

testnote = testnote.reshape(1,-1)

这会将testnote 重塑为形状 (1, 3),以便您将批量大小明确定义为 1。

【讨论】:

  • 这满足了我的需要,我想我知道我哪里出错了。如果没有别的,我得到的输出是正确的形状。现在我将回顾我的模型并解决可能更根本的误解。
猜你喜欢
  • 2020-10-08
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 2017-05-29
  • 2016-10-06
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
相关资源
最近更新 更多