首页 文章

具体来说,当它比ram大时,如何训练神经网络?

提问于
浏览
2

我有关于如何训练比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,我甚至需要适合生成器吗?即使使用这些方法,你似乎仍然需要能够在ram中使用整个模型吗?

  • 在keras中,模型在计算内存要求时是否包含训练数据?如果是这样我觉得我有麻烦了 .

从本质上讲,我假设在任何时候都不能超过我的8 Gb ram,无论是从一个热编码到加载模型到甚至是一小批样本的训练 . 我只是不确定如何具体完成这一点 .

2 回答

  • 0

    我无法回答所有问题,而且我对这些答案也很感兴趣,因为我也面临着8GB的问题 .

    我只能建议如何一次传递小批量 .

    Question 2:

    我不知道,但你可以创建一个循环到load the file partially(如果文件已正确保存) .

    您可以创建一个外部循环:

    • 创建一个只包含文件中一个或两个样本的小数组

    • 使用方法 train_on_batch 只传递那个小数组 .

    • 释放内存处理数组或用下一个样本填充相同的数组 .

    Question 3:

    还不知道h5py文件,是打开python生成器文件的对象吗?

    如果没有,您可以自己创建generator .

    我们的想法是使生成器只加载文件的一部分,并产生带有一个或两个数据样本的小批量数组 . (与问题2中的完全相同,但循环进入生成器 .

  • 0

    通常对于非常大的样本集,使用“在线”训练方法 . 这意味着,与大批量一次训练您的神经网络不同,它允许神经网络在获得更多样本时逐步更新 . 请参阅:随机梯度下降

相关问题