2017-06-27 193 views
1

我的训练集非常大。整个事情占用大约120GB的RAM,所以我甚至不能生成numpy.zeros()数组来存储数据。生成keras训练数据

从我所看到的,使用生成效果很好,当整个数据集已经被加载到一个数组,但随后逐渐被送入网络,然后事后删除。

是不是不行了发电机产生的数组,插入数据,将数据加载到网络中,删除数据?或者整个过程会花费太长时间,我应该做其他的事情?

感谢

回答

2

你并不需要一次加载整个数据,你可以加载一样多批次的需求。看看这个answer

+0

菲比嗨,我一直试图做的正是然而最近我的成绩越来越糟糕大规模,似乎需要更长的时间来训练,如果我曾经想要获得相同类型的结果?这是预期的吗? – tryingtolearn

+0

当批次不能很好地表示数据时(嘈杂梯度),可能会发生这种情况。您可以加载比批处理大小更多的数据,对其进行分层,然后进行训练,或使用batch_size进行处理,直到获得类似的结果。 [更多信息](https://www.quora.com/Intuitively-how-does-batch-size-impact-a-convolutional-network-training) –

+0

我明白了。我使用1024的batch_size,epochs = 4,steps_per_epoch = 500,我认为这是非常合理的估计。这是一个基于角色的模型,训练数据长达1500万字符。 正如我的理解,每个历元将需要500个批次,每个批次将具有1024个数据点,并且每个这些数据点的将是100个字符长。据我所知,这只是超参数调整,直到我得到一些好东西?这里有没有启发式的用法? 我会测试一大堆措施,并在这里进一步回复,如果它不好。谢谢! – tryingtolearn