在下面的模型中,我应该将LSTM的input_shape取什么值

时间:2019-08-07 06:26:07

标签: python keras lstm

1 个答案:

答案 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,这是有道理的,因为如果将其包含在模型定义中,则必须使用此特定的批次大小进行训练和测试,而这很不方便。