Mar*_*rou 3 python numpy shape keras tensorflow
我是 Keras 的新手,正在尝试测试我刚刚训练的模型。
我正在使用 Tensorflow 后端和 Python 3。
但是,我输入的形状和 Keras 所说的错误形状完全不同。这是我的代码:
testnote = np.zeros((3,))
testnote[0] = 70
testnote[1] = 70
print(testnote.shape)
pred = model.predict(testnote)
print(pred)
Run Code Online (Sandbox Code Playgroud)
我的一致输出是 testnote 形状的“(3,)”,然后是我的预测行的错误:“ValueError:检查输入时出错:预期密集_1_输入具有形状 (3,) 但得到形状为 (1,) 的数组”
当我刚刚确认形状为 (3,) 时,Keras 如何将 testnote 读取为具有形状 (1,)?它是否对“形状”的含义使用了某种不同的标准?我试过重塑和添加括号和一堆其他东西,但我真的不知道问题是什么。
对于额外的上下文,该模型接受一个具有 3 个标量输入(代表音高、力度和乐器类别)的数组,并输出一个具有 1025 个标量输出的数组。我小心地不使用“维度”这个词,因为我认为这是我感到困惑的地方,而且从技术上讲,两者都只是一维。我确定我的模型有很多问题,我必须在此之后修复这些问题。但是,我只想让这个预测函数工作,这样我就可以了解我的输出是什么样的。
在此先感谢您的帮助。
KerasModel隐含地期望您的数据(作为 a 传递np array)具有批处理大小的维度。目前,您的模型被解释testnote为形状 1 的 3 个示例。尝试将批次维度添加到“testnote”,如下所示:
testnote = testnote.reshape(1,-1)
Run Code Online (Sandbox Code Playgroud)
这将重塑testnote为形状 (1, 3),以便您明确地将批量大小定义为 1。