几天来我一直在寻找答案,但是我在互联网上找不到的东西似乎特别适用于我遇到的错误:
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输入输入的模型中发生了第一个错误。
所有这些使我相信错误在于我的数据中,因为我很确信该模型不是错误,因为它发生在多个不同的模型中。
答案 0 :(得分:1)
您需要添加correct++
层,以便将Flatten
层中的数据展平到Conv1D
层。
Dense