Keras:使用验证数据时出现形状错误

Keras:使用验证数据时出现形状错误,keras,Keras,正在尝试将验证添加到model.fit,但每次添加时都会出现错误: ValueError: Cannot feed value of shape (6, 4, 10) for Tensor 'lstm_input_1:0', which has shape '(32, 4, 10)' 型号: 可能是什么错误?如果我删除validation\u split。我还尝试手动将我的训练集拆分为两个,并使用validation\u data=(x\u val,y\u val)添加它,但我得到了完全相同的

正在尝试将验证添加到
model.fit
,但每次添加时都会出现错误:

ValueError: Cannot feed value of shape (6, 4, 10) for Tensor 'lstm_input_1:0', which has shape '(32, 4, 10)'
型号:
可能是什么错误?如果我删除
validation\u split
。我还尝试手动将我的训练集拆分为两个,并使用
validation\u data=(x\u val,y\u val)
添加它,但我得到了完全相同的错误。

问题来自于您硬编码输入值的
批量大小。您已将其固定为32,然后当您尝试验证您的模型时,验证数据将与一批6个样本一起发送,这可能是因为您没有足够的验证数据,或者可能是因为样本数不是32的倍数。。。但是,如果我是你,我会让
批量大小
免费。像这样:

model.add(LSTM(128, input_shape=(timesteps, data_dim), return_sequences=True, stateful=True))
指定
input\u-shape
而不是
batch\u-input\u-shape
。这样,您的网络将接受任何大小的批处理,模型流中的每一层都将适应任何批处理大小(如果没有硬编码)


我希望这能有所帮助:)

对不起,那是我的错,我刚在副本上打错了字。实际输出如下:
对768个样本进行训练,对768个样本进行验证
值错误:无法为张量'lstm\u input_1:0'输入形状(768,4,10)的值,该张量具有形状'(32,4,10)
。768显然是32的倍数,这就是我不理解错误的原因。验证不是分批进行的。验证时,它将整个验证集作为一个批次发送,并对其进行预测。因此错误。。。修复工作正常吗?更改为输入形状而不是批处理输入形状啊,这很有效,尽管我也必须删除
stateful=True
。为什么?您不需要stateful,也不需要批处理相关的约束?如果您确实需要按批进行验证,可以使用fit_generator,然后可以使用生成器来生成培训数据和验证数据。这有助于您管理批次的进入方式,并使用批次进行验证。:)
model.add(LSTM(128, input_shape=(timesteps, data_dim), return_sequences=True, stateful=True))