Tensorflow / Keras:模型的输出层期望的输入形状与其接收的形状不同

时间:2018-12-07 02:18:21

标签: python tensorflow machine-learning keras

几天来我一直在寻找答案,但是我在互联网上找不到的东西似乎特别适用于我遇到的错误:

ValueError: Error when checking target: expected dense_1 to have shape (1, 300) but got array with shape (1, 60)

这是我使用的模型:

model = keras.Sequential([
keras.layers.Conv1D(5,input_shape=(1,60), kernel_size=12, padding='same'), 
keras.layers.Conv1D(10, padding='same',activation=tf.nn.relu, kernel_size=10),
keras.layers.Conv1D(20, padding='same',activation=tf.nn.relu, kernel_size=6),
keras.layers.Conv1D(30, padding='same',activation=tf.nn.relu, kernel_size=5),
keras.layers.Dense(70, activation=tf.nn.relu),
keras.layers.Dense(300,activation="tanh")
]) 
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
loss='mse',
metrics=['mae'])

我唯一可以使用网络火车的方法是将输出层中的节点数(在本例中为错误消息中的density_1)设置为等于60,这是模型为其输入接受的值数

我还通过完全连接的模型运行此数据,在该模型中发生了相同的结果,如果输出中的节点数不是60,也会出现错误。

我尝试进行故障排除,以通过在tensorflow网站上运行mnist时尚分类示例来查看是否是我的tensorflow或python版本可能引起了问题,但是此命令没有错误运行,并且训练得很好。

然后,我将模型替换为mnist时尚示例中使用的模型,只是将输入形状更改为(60,),因为我的数据是一维的,并且得到了相同的确切错误:

ValueError: Error when checking target: expected dense_1 to have shape (10,) but got array with shape (60,)

除了这次,它显示了输入形状的微小变化,因为在向Conv1D输入输入的模型中发生了第一个错误。

所有这些使我相信错误在于我的数据中,因为我很确信该模型不是错误,因为它发生在多个不同的模型中。

1 个答案:

答案 0 :(得分:1)

您需要添加correct++层,以便将Flatten层中的数据展平到Conv1D层。

Dense