在我的原始设置中,我得到了
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
和y1
大小相同的时间序列数据。即,
X2 = (1200,40,1)
y2 = (1200,10)
现在,我将 X1
、X2
和 y1
、y2
堆叠为 3D 数组:
X_stack = (1200,40,2)
y_stack = (1200,10,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_stack
和 y_stack
,而不将它们 reshape 为 2D 数组。你能告诉我如何修改设置吗?谢谢。
最佳答案
我假设您为阵列报告的形状中某处存在错误。我猜 y_stack.shape == (1200, 10, 2)
,对吗?
但是,这里有一种方法可以执行您所描述的操作:
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))
model.add(Reshape((10, 2)))
网络的输出由 Dense
层创建为 2D 张量,然后由 Reshape
reshape 为 3D 张量。
从输入输出的角度来看,这应该像您指定的那样。
关于python - 在 Keras 中,如何为 LSTM 层获取 3D 输入和 3D 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56255643/