为了账号安全,请及时绑定邮箱和手机立即绑定

Keras LSTM - 使用来自生成器的 Tensorflow 数据集 API 提供序列数据

Keras LSTM - 使用来自生成器的 Tensorflow 数据集 API 提供序列数据

海绵宝宝撒 2021-06-18 22:16:27
我正在尝试解决如何将数据提供给我的 LSTM 模型进行训练。(我将在下面的示例中简化问题。)我的数据集中的 csv 文件中有以下数据格式。Timestep    Feature1    Feature2    Feature3    Feature4    Output1           1           2           3           4           a2           5           6           7           8           b3           9           10          11          12          c 4           13          14          15          16          d5           17          18          19          20          e6           21          22          23          24          f7           25          26          27          28          g8           29          30          31          32          h9           33          34          35          36          i10          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参数在这里应该做什么?
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

我认为这个答案可能与您要寻找的很接近!

您可以通过在窗口上滑动来创建批次,然后在您的案例中随机播放输入。数据集 api的shuffle函数有一个 reshuffle_after_each_iteration 参数,如果您想尝试设置随机种子并查看混洗输出的顺序,您可能希望将其设置为 False。


查看完整回答
反对 回复 2021-06-22
  • 1 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号