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

Tensorflow 具体来说,当神经网络大于ram时,如何训练神经网络?,tensorflow,keras,hdf5,Tensorflow,Keras,Hdf5,我有一些关于如何训练一个比ram更大的神经网络的具体问题。我想使用事实上的标准,它似乎是Keras和tensorflow 我需要使用哪些关键类和方法 从Numpy,到scipy,到pandas,h5py,再到keras,为了不超过我可怜的8GB内存?我有时间训练模型;我没有现金。我的数据集需要200 GB的ram 在keras中有一个model_fit()方法。它需要X和Y numpy阵列。如何让它接受磁盘上的hdf5 numpy阵列?当指定模型体系结构本身时,我如何保存ram,因为工作内存有时

我有一些关于如何训练一个比ram更大的神经网络的具体问题。我想使用事实上的标准,它似乎是Keras和tensorflow

  • 我需要使用哪些关键类和方法 从Numpy,到scipy,到pandas,h5py,再到keras,为了不超过我可怜的8GB内存?我有时间训练模型;我没有现金。我的数据集需要200 GB的ram

  • 在keras中有一个model_fit()方法。它需要X和Y numpy阵列。如何让它接受磁盘上的hdf5 numpy阵列?当指定模型体系结构本身时,我如何保存ram,因为工作内存有时不需要>8GB吗

  • 关于fit_生成器,它是否接受hdf5文件?如果model_fit()方法可以接受hdf5,我甚至需要fit生成器吗?看起来,即使使用这些方法,您仍然需要能够在ram中拟合整个模型

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


  • 本质上,我是在这样一种假设下的:无论是从一次热编码到加载模型,还是在一小批样本上进行训练,我的内存都不能超过8GB。我只是不知道如何具体做到这一点

    我不能回答所有问题,我对这些答案也很感兴趣,因为我也面临着8GB的问题

    我只能建议如何一次通过一小批

    问题2:

    我不认为Keras会支持传递h5py文件(但我真的不知道),但是您可以创建一个循环(如果文件为此正确保存的话)

    您可以创建外部循环以:

    • 创建一个小数组,其中只包含文件中的一个或两个样本
    • 使用方法
      train\u on\u batch
      只传递那个小数组
    • 释放内存以释放阵列或用下一个样本填充同一阵列
    问题3:

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

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


    其思想是使生成器只加载文件的一部分,并生成带有一个或两个数据样本的小批量数组。(与问题2中所做的几乎相同,但循环进入发生器内部。

    通常对于非常大的样本集,“在线”使用了训练方法。这意味着不需要一次大批量地训练神经网络,而是允许神经网络在获得更多样本时进行增量更新。请参阅:随机梯度下降

    因此,您的神经网络比RAM大,并且您的训练数据比RAM大?我可以问一下您的建议吗数据?我后来开始使用pyspark。没有所有的神经网络选项,算法更基本,但我仍然处于算法不重要、数据更有用的阶段。我个人还没有看到算法最重要的情况。