层 "model" 的输入 0 与层不兼容:预期形状=(None, 250, 3),在经过训练的变压器模型中找到形状=(None, 3)

Input 0 of layer "model" is incompatible with the layer: expected shape=(None, 250, 3), found shape=(None, 3) in trained transformer model

我有一个用 tensorflow 2.7.0 和 python 3.7 训练的 keras transformer 模型,输入形状:(None, 250, 3) 和一个二维数组输入形状: (250, 3)(不是图像)

进行预测时:

prediction = model.predict(state)

我得到ValueError: Input 0 of layer "model" is incompatible with the layer: expected shape=(None, 250, 3), found shape=(None, 3)

项目代码:https://github.com/MikeSifanele/TT

这是 state 的样子:

state = np.array([[-0.07714844,-0.06640625,-0.140625],[-0.140625,-0.1650391,-0.2265625]...[0.6376953,0.6005859,0.6083984],[0.7714844,0.7441406,0.7578125]], np.float32)

一些解释:

对于模型的输入形状,即 (None, 250, 3),第一个轴(由 None 表示)是“样本”轴,而其余的即 250,3 表示输入维度.因此,当输入形状为 (250, 3) 时,它假定第一个轴为“样本”轴,其余为输入维度,即 3。因此,为了使其保持一致,我们需要在开头添加一个维度,如下所述:

state = np.expand_dims(state, axis=0)

state的形状就变成了(1, 250, 3)~(None, 250, 3).