【发布时间】:2018-03-19 04:32:46
【问题描述】:
我是 Keras 的新手,我很难理解 LSTM 层的输入数据的形状。Keras 文档说输入数据应该是具有形状(nb_samples、timesteps、input_dim)的 3D 张量。 我无法理解这种格式。 timesteps 变量是否代表网络记住的时间步数?
在我的数据中,一些时间步长会影响网络的输出,但我不知道提前多少,即我不能说前 10 个样本会影响输出。 例如,输入可以是构成句子的单词。每个句子中的单词之间存在重要的相关性。我事先不知道句子的长度,这个长度也因句子而异。我确实知道句子何时结束(即我有一个表示结束的句号)。两个不同的句子相互之间没有影响 - 不需要记住前一个句子。
我正在使用 LSTM 网络来学习强化学习中的策略,所以我没有固定的数据集。代理的策略会改变句子的长度。
我应该如何塑造我的数据?应该如何输入到 Keras LSTM 层?
【问题讨论】:
-
根据您愿意花费多少资源,您应该选择句子的最大长度,然后将所有示例截断/填充为 0 到该长度。 Keras 要求修复它。
-
那么输入形状应该是这种情况吗? input_shape= (maximum_sentence_length, )?
-
你应该把你的文本分成句子,那么你的句子数量就是你的
nb_samples。timesteps是单词/字符的最大数量。然后input_dim是这些词/字符的表示的大小(例如,如果您使用词嵌入,则嵌入大小) -
谢谢!最后一件事,如果最大句子长度是 5 并且句子是“I am Andrey”,我应该将其表示为 (0,0, I, am, Andrey)?
-
(在我看来)应该是(I, am, Andrey, 0, 0),但我也看到了另一种方式。
标签: keras lstm reinforcement-learning