我对输入到Keras模型的形状有问题



我有一个有5个输入节点和1个输出节点的模型。

model = keras.models.Sequential()
model.add(keras.layers.Dense(5, input_shape=(5, ), activation='relu'))
model.add(keras.layers.Dense(5, activation='relu'))
model.add(keras.layers.Dense(1, activation='exponential'))
model.compile(optimizer="sgd", loss="mean_squared_error")

我正在尝试用这些输入训练一个批处理。

input1 = [1, 4, 2, 4, 5]
input2 = [1, 4, 3, 5, 1]
input3 = [1, 4, 3, 3, 2]
input_batch = np.array([input1, input2, input3])
output1 = 2.5
output2 = 3.9
output3 = 1.3
output_batch = np.array([output1, output2, output3])
model.train_on_batch(input_batch, output_batch)
print(model.predict(np.array([1, 5, 2, 3, 1])))

这似乎不工作,所以我需要一些帮助如何塑造numpy数组,使其适合模型。下面是错误信息:

ValueError: Error when checking input: expected dense_input to have shape (5,) but got array with shape (1,)

输出的最后一个维度是1,因此必须更改标签。另一个问题-predict处理批量。所以你必须添加一个批处理维度。

改变这些行:

model.train_on_batch(input_batch, output_batch[..., tf.newaxis])
print(model.predict(np.array([[1, 5, 2, 3, 1]]))) # <= add brackets

相关内容

  • 没有找到相关文章

最新更新