我正在尝试解决如何将数据提供给我的 LSTM 模型进行训练。(我将在下面的示例中简化问题。)我的数据集中的 csv 文件中有以下数据格式。
Timestep Feature1 Feature2 Feature3 Feature4 Output
1 1 2 3 4 a
2 5 6 7 8 b
3 9 10 11 12 c
4 13 14 15 16 d
5 17 18 19 20 e
6 21 22 23 24 f
7 25 26 27 28 g
8 29 30 31 32 h
9 33 34 35 36 i
10 37 38 39 40 j
任务是根据过去 3 个时间步的数据估计任何未来时间步的输出。一些输入输出示例如下:
示例 1:输入:
Timestep Feature1 Feature2 Feature3 Feature4
1 1 2 3 4
2 5 6 7 8
3 9 10 11 12
输出: c
并且在将数据提供给模型时,我想以某种方式对数据进行混洗,以便在训练时不提供连续序列。与其他词,我非常想喂像时间步长的数据序列,3,4,5一步到位,也许时间步5,6,7在下一步,也许2,3,4在接下来的步骤,等等。而我最好不要喂的数据作为1,2,3第一, 然后2,3,4, 然后3,4,5, 等等...
在训练我的 LSTM 网络时,我使用的是带有 Tensorflow 后端的 Keras。我想在将数据提供给fit_generator(...)函数时使用生成器。
我的愿望是使用 Tensorflow 的数据集 API 从 csv 文件中获取数据。但是我不知道如何让生成器返回我需要的东西。如果我使用 Tensorflow 的数据集 API 对数据进行混洗,则会破坏时间步长的顺序。生成器还应该返回包含多个序列示例的批次。例如,如果批量大小为 2,则可能需要返回 2 个序列,如时间步长 2、3、4 和时间步长 6、7、8。
希望我能解释我的问题......是否可以在生成器函数中使用 Tensorflow 的数据集 API 来解决这样的序列问题,以便我可以像上面解释的那样提供批量序列?(生成器需要返回带有 shape [batch_size, length_of_each_sequence, nr_inputs_in_each_timestep]、 wherelength_of_each_sequence=3和nr_of_inputs_in_each_timestep=4我的示例中的数据。)或者是仅在 Python 中编写生成器的最佳方法,也许使用 Pandas ..?
我还不能在 csv 文件读取上尝试它,但我认为这种方法应该工作得很好!
但在我看来,该reshuffle_each_iteration参数没有任何区别。这真的需要吗?设置为True或时,结果不一定相同False。这个reshuffle_each_iteration参数在这里应该做什么?
Helenr
相关分类