给定一个三维向量的时间序列,其中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]。
我不能只对每个向量进行一次热编码,因为数字可以有任意的值,所以我想知道如何才能做到这一点。任何洞察力都是非常感谢的,谢谢!
发布于 2018-06-25 02:07:53
在这种情况下,你的输入只是向量。在时间步骤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。
您将在每个时间步骤都有输出,而您将忽略这些输出。您的损失函数将只基于最后一个时间步骤的输出。
https://stackoverflow.com/questions/51015259
复制相似问题