在 Keras 中,如何获取 LSTM 层的 3D 输入和 3D 输出

数据挖掘 喀拉斯 lstm
2021-10-02 18:55:19

在我原来的设置中,我得到了

X1 = (1200,40,1)
y1 = (1200,10)

然后,我可以完美地使用我的代码:

model = Sequential()
model.add(LSTM(12, input_shape=(40, 1), return_sequences=True))
model.add(LSTM(12, return_sequences=True))
model.add(LSTM(6, return_sequences=False))
model.add((Dense(10)))

X1现在,我进一步得到了另一个与和大小相同的时间序列数据y1IE,

X2 = (1200,40,1)
y2 = (1200,40)

X1现在,我将X2堆叠y1y23D 数组:

X_stack = (1200,40,2)
y_stack = (1200,40,2)

然后,我尝试修改我的keras代码,如:

model = Sequential()
model.add(LSTM(12, input_shape=(40, 2), return_sequences=True))
model.add(LSTM(12, return_sequences=True))
model.add(LSTM(6, return_sequences=False))
model.add((Dense((10,2))))

我希望我的代码直接与 3D 数组一起工作,X_stacky_stack不是将它们重塑为 2D 数组。你能帮我看看如何修改设置吗?谢谢你。

1个回答

添加另一个维度来表示时间步数。

来自 Keras 关于循环层的文档:

if return_sequences:具有形状(batch_size、timesteps、units)的 3D 张量。

像这样的东西:

model = Sequential()
model.add(LSTM(12, input_shape=(40, 10, 3), return_sequences=True))