答案 0 :(得分:0)
对于您提供的代码,所有可能的答案都是错误的。
LSTM层接受形状为(batch_dim, time_dim, feat_dim)
的3D输入张量,您应该在层定义中写入input_shape=(time_dim, feat_dim)
。
但是,由于您使用X_train = np.expand_dims(X_train, axis=0)
,这意味着您的数据中只有一个训练样本,这完全没有道理。因此,我怀疑您真正想做的是
X_train = np.expand_dims(X_train, axis=-1)
具有X_train.shape[0]
个样本,X_train.shape[1]
个时间步长和仅1个特征维,这在许多时间序列分析问题中很常见。
如果我的猜测正确,那么您输入的LSTM形状应为(X_train.shape[1], 1)
。
注意:keras的设置没有故意指定batch_dim
,这是有道理的,因为如果将其包含在模型定义中,则必须使用此特定的批次大小进行训练和测试,而这很不方便。