Keras LSTM input/output 形状

Keras LSTM input/output shape

我需要在每个循环层都有输出,我的设置如下:

100 个训练示例,每个示例 3 个时间步,每个单独元素的 20 维特征向量。

x_train: (100,3,20)

y_train: (100,20)

LSTM 架构:

model.add(LSTM(20, input_shape=(3,20), return_sequences=True))
model.compile(loss='mean_absolute_error', optimizer='adam', metrics=['accuracy'])
model.summary()

培训:

history = model.fit(x_train, y_train, epochs=50, validation_data=(x_test, y_test))

错误:

ValueError: Dimensions must be equal, but are 20 and 3 for '{{node Equal}} = Equal[T=DT_FLOAT, incompatible_shape_error=true](IteratorGetNext:1, Cast_1)' with input shapes: [?,20], [?,3].

请帮助我确定正确的 input/output LSTM 维度。 谢谢

LSTM(20, input_shape=(3,20), return_sequences=True) 作为输入形状 (100,3,20) 和 returns (100,3,20)。但是,您的目标输出被编码为 (100,20).

从维度来看,我假设您想将每个序列映射到一个 non-sequence,即您可以这样做:

LSTM(20, input_shape=(3,20), return_sequences=False)

这将 return 最终的隐藏状态,即 (100,20) 的形状与您的目标输出相匹配。