我有关于如何训练比ram更大的神经网络的具体问题。我想使用似乎是Keras和tensorflow的事实标准。
我需要使用哪些关键类和方法 从Numpy,到scipy,到pandas,h5py,再到keras,以便不超过我微不足道的8 gb内存?我有时间训练模型;我没有现金。我的数据集需要200 GB的ram。
在keras中有一个model_fit()方法。它需要X和Y numpy数组。如何让它接受磁盘上的hdf5 numpy数组?在指定模型体系结构时本身如何保存ram,因为工作内存不需要>有时8 gb?
关于fit_generator,它接受hdf5文件吗?如果model_fit()方法可以接受hdf5,我还需要适合生成器吗?即使使用这些方法,您仍然需要能够在整个模型中使用?
在keras中,模型在计算内存要求时是否包含训练数据?如果是这样我觉得我有麻烦了。
本质上,我假设我不会超过我的8 Gb ram,无论是从一个热编码到加载模型,甚至是一小批样本的训练。我只是不确定如何具体完成这一点。
答案 0 :(得分:0)
我无法回答所有问题,而且我对这些答案也很感兴趣,因为我也面临着8GB的问题。
我只能建议如何一次传递小批量。
问题2:
我不认为Keras会支持传递h5py文件(但我真的不知道),但你可以创建一个load the file partially的循环(如果文件已正确保存)。
您可以创建一个外部循环:
train_on_batch
。 问题3:
还不知道h5py文件,是打开文件python生成器的对象吗?
如果没有,您可以自己创建generator。
这个想法是让生成器只加载文件的一部分,并产生带有一个或两个数据样本的小批量数组。 (与问题2中的完全相同,但循环进入生成器。
答案 1 :(得分:0)
通常对于非常大的样本集,使用“在线”训练方法。这意味着,与大批量一次训练您的神经网络不同,它允许神经网络在获得更多样本时逐步更新。请参阅:随机梯度下降