我成功地从文件加载模型,当我尝试预测形状为 (480,) 的任何输入的输出时,我收到 ValueError 如下:
<块引用>ValueError: 层序列 1 的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 480,但接收到形状为 (32, 1) 的输入
我正在使用的代码
import numpy as np
from keras.models import load_model
model = load_model("my_model.h5")
sample = np.zeros((480,))
model.predict(sample)
你知道为什么会这样吗?
加载后我的模型摘要:
这个模型的训练看起来很合理,但是如果我在调用 model.compile() 之后试图预测值,同样的错误会发生。
model = keras.models.Sequential([
keras.layers.Input(shape=(480,)),
keras.layers.Dense(1024, activation="relu", name="layer1"),
keras.layers.Dense(1024, activation="relu", name="layer2"),
keras.layers.Dense(1024, activation="relu", name="layer3"),
keras.layers.Dense(1024, activation="relu", name="layer4"),
keras.layers.Dense(38, activation="softmax", name="output")
])
model.compile(
optimizer=keras.optimizers.Adam(lr=0.0003),
loss='categorical_crossentropy',
metrics=['categorical_accuracy']
)
sample = np.zeros((480,))
model.predict(sample) # ValueError
model.fit(...) # works fine
答案 0 :(得分:0)
这对我有用;我在输入样本的形状上加了“1”:
import numpy as np
model = keras.models.Sequential([
keras.layers.Input(shape=(480,)),
keras.layers.Dense(1024, activation="relu", name="layer1"),
keras.layers.Dense(1024, activation="relu", name="layer2"),
keras.layers.Dense(1024, activation="relu", name="layer3"),
keras.layers.Dense(1024, activation="relu", name="layer4"),
keras.layers.Dense(38, activation="softmax", name="output")
])
model.compile(
optimizer=keras.optimizers.Adam(lr=0.0003),
loss='categorical_crossentropy',
metrics=['categorical_accuracy']
)
sample = np.zeros((1, 480,))
model.predict(sample) # No ValueError