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

标签 python keras neural-network lstm

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

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)))

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

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

现在,我将 X1X2y1y2 堆叠为 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_stacky_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/

相关文章:

python - 将keras模型导出到tflite

python-3.x - 如何在不指定输入(或输入形状)的情况下在 keras 2 功能 API 中链接/组合层

python - 导入keras时出错 ModuleNotFoundError : No module named 'tensorflow.examples' ; 'tensorflow' is not a package

python - 如何在Python、Keras中限制神经网络的输出为正

machine-learning - 使用 PyTorch 训练神经网络时出现错误 "' Softmax' 对象没有属性 'log_softmax'

python - 访问使用 for 循环创建的 Entry 小部件

python - 如何有条件地跳过 python 中 for 循环中的迭代步骤数?

machine-learning - 如何使用全卷积网络在 Cifar10 上获得最先进的结果?

python - 正则表达式删除匹配的单词和连续的单词

python -/accounts/sign_up/create() 处的 TypeError 需要 1 个位置参数,但给出了 2 个