【问题标题】:Generating data for training in keras为 keras 中的训练生成数据
【发布时间】:2017-06-27 16:58:25
【问题描述】:

我的训练集真的很大。整个东西占用了大约 120GB 的 RAM,所以我什至无法生成 numpy.zeros() 数组来存储数据。

据我所见,当整个数据集已加载到数组中但随后逐渐馈入网络并随后被删除时,使用生成器效果很好。

生成器可以创建数组、插入数据、将数据加载到网络中、删除数据吗?或者整个过程会花费太长时间,我应该做其他事情吗?

谢谢

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    您不需要一次加载整个数据,您可以根据批次的需要加载多少。看看这个answer

    【讨论】:

    • 嗨菲比,我最近一直在尝试这样做,但是我的结果越来越差,如果我想获得相同类型的结果似乎需要更长的时间来训练?这是意料之中的吗?
    • 当您的批次不能很好地表示您的数据(嘈杂的梯度)时,可能会发生这种情况。您可以加载比批量大小更多的数据,对其进行分层,然后训练或使用 batch_size 直到获得相似的结果。 More Info
    • 我明白了。我使用的 batch_size 为 1024,epochs=4,steps_per_epoch=500,我认为这是非常合理的估计。这是一个基于字符的模型,训练数据有 1500 万个字符长。据我了解,每个 epoch 将需要 500 个批次,每个批次将有 1024 个数据点,每个数据点的长度为 100 个字符。据我了解,这只是超参数调整,直到我得到好的结果?这里有关于使用什么的启发式方法吗?我会测试很多措施,如果不好的话,我会在这里进一步回复。谢谢!
    • 好吧,较低的 batch_sizes 直觉上需要更多的 epoch 才能收敛到与较大的 batch_sizes 相同的最小值,所以我会增加 epoch 的数量。此外,使用此函数将您的步数与 batch_size 关联起来:steps_per_epoch = len(train_set)//batch_size + 1。您也可以让 batch_size 大于 1024。如果您的计算机至少有 16GB,请尝试使用 8192 甚至更多。
    • 希望这听起来不傻,但我的训练集不是在生成器中生成的吗?那么我如何从这里访问这个变量呢?
    猜你喜欢
    • 2020-10-04
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 2015-05-15
    • 2022-01-22
    • 2020-07-13
    相关资源
    最近更新 更多