python - 具有多维输出目标的 LSTM

标签 python tensorflow machine-learning keras lstm

给定 3D 向量的时间序列,[x, y, z] 其中 x、y 和 z 是任意整数,我想建立一个模型来预测下一个向量系列并捕获每个维度 x、y、z 中的模式。

所以如果 X = [[0, 0, 6], [1, 0, 0], [9, 9, 9], [3, 0, 3], [1, 2, 3] ] 并且我为我的模型提供了 4 元素序列 [[0, 0, 6], [1, 0, 0], [9, 9, 9], [3, 0, 3] ] 它将预测 [1, 2, 3]

我不能只对每个向量进行一次性编码,因为数字可以有任意值,所以我想知道如何实现这一点。非常感谢任何见解,谢谢!

最佳答案

在这种情况下,您的输入只是向量。在时间步 1,向量是 [0,0,6],在时间步 2,向量是 [1,0,0],依此类推。对于输出,您需要通过一个全连接层传递输出,该层将其转换为正确的输出大小。

假设你的序列长度是固定的,你真的不需要做任何预处理,除了可能标准化或重新调整你的输入,使它们不是很大的数字。

一般来说,RNN 的工作方式很像全连接网络。事实上,一个 RNN 单元由 4 个完全连接的网络组成,这些网络以一种非平凡的方式简单地连接在一起。但是从你输入和输出的角度来看,将它们想象成一个简单的完全连接的网络(每个时间步长)。

您可以在这里阅读我最后一段的更多信息:http://colah.github.io/posts/2015-08-Understanding-LSTMs/

如果您的序列长度是可变的,那么您通常会添加一个将其标记为预测步骤的输入。这可能只是全零,例如:

X = [[0, 0, 6], [1, 0, 0], [9, 9, 9], [3, 0, 3], [0, 0, 0]]

或者,如果 [0,0,0] 是一个有效的数据点,您可以添加一个功能来将时间步标记为输入或预测,例如:

X = [[0, 0, 0, 6], [0, 1, 0, 0], [0, 9, 9, 9], [0, 3, 0, 3], [1, 0, 0, 0]]

该数据集中的第一个值指示时间步长是输入 0 还是预测 1

您将在每个时间步都有输出,您将忽略这些输出。您的损失函数将仅基于最后一个时间步长的输出。

关于python - 具有多维输出目标的 LSTM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51015259/

相关文章:

python - 匹配列表中的任何关键字是否存在于字符串中

tensorflow - 训练时间序列数据的最佳机器学习模型是什么? [不预测]

machine-learning - 为什么没有人将 Hopfield 网络用于 MNIST?

tensorflow - tensorflow 会自动检测 GPU 还是我必须手动指定它?

tensorflow - 在 Tensorflow 中将 3 阶张量与 2 阶张量相乘

python - 属性错误 : 'tensorflow.python.framework.ops.EagerTensor' object has no attribute 'decode'

lua - 需要 ('image' )在 Torch7 中不起作用

python - 选择具有相对 ID 的不同列

python - Python 中使用 min 的默认函数

python - 你能在 Atom 编辑器中打开 Python shell 吗?