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

nam*_*nam 9 python neural-network lstm keras

在我原来的环境中

X1 = (1200,40,1)
y1 = (1200,10)
Run Code Online (Sandbox Code Playgroud)

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

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)))
Run Code Online (Sandbox Code Playgroud)

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

X2 = (1200,40,1)
y2 = (1200,10)
Run Code Online (Sandbox Code Playgroud)

现在,我叠X1X2并且y1y2作为3D阵列:

X_stack = (1200,40,2)
y_stack = (1200,10,2)
Run Code Online (Sandbox Code Playgroud)

然后,我尝试修改我的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))))
Run Code Online (Sandbox Code Playgroud)

我希望我的代码直接与3D数组一起使用X_stacky_stack而不希望将其重塑为2D数组。您能帮我修改设置吗?谢谢。

mob*_*cen 0

您可以使用以下输出元组X_stack.shape()

model = Sequential()
model.add(LSTM(12, input_shape=(X_stack.shape[1], X_stack.shape[2]),return_sequences=True))
model.add(LSTM(12, return_sequences=True))
model.add(LSTM(6, return_sequences=False))
model.add((Dense((10,2))))
Run Code Online (Sandbox Code Playgroud)