我是 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 如何将测试笔记读取为形状 (1,)?它是否对“形状”的含义使用了某种不同的标准?我试过 reshape 和添加括号以及其他一些东西,但我真的不知道问题出在哪里。
对于其他上下文,该模型接受一个包含 3 个标量输入(代表音高、速度和乐器类别)的数组,并输出一个包含 1025 个标量输出的数组。我小心翼翼地没有使用“维度”这个词,因为我认为这是我感到困惑的地方,而且从技术上讲,两者都只有一维。我确信我的模型有很多问题,我必须在接下来的时间里解决这些问题。但是,我只想让这个预测函数起作用,这样我就可以理解我的输出是什么样子的。
在此先感谢您的帮助。
最佳答案
Keras 模型
隐含地期望您的数据(作为 np 数组
传递)具有批量大小的维度。目前,您的模型正在将 testnote
解释为形状 1 的 3 个示例。尝试将批量维度添加到“testnote”,如下所示:
testnote = testnote.reshape(1,-1)
这会将 testnote
reshape 为 (1, 3),这样您就可以明确地将批量大小定义为 1。
关于python - Keras 预测形状不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751131/