训练深度学习模型时如何计算小批量记忆影响?
我正在尝试根据Andrej Karphaty的以下注释计算GPU训练模型所需的内存量:http ://cs231n.github.io/convolutional-networks/#computational-considerations 我的网络有532,752个激活和19,072,984个参数(权重和偏差)。这些都是32位浮点值,因此每个值占用4个字节的内存。 我的输入图像是180x50x1(宽度x高度x深度)= 9,000个 float 32值。我不使用图像增强,因此我认为杂项内存仅与最小批处理大小有关。我使用的是128张图像的小批量。 根据Andrej的建议,我得到以下内存大小: 激活: 532,752 * 4 /(1024 ^ 2)= 2.03 MB 参数: 19,072,984 * 4 /(1024 ^ 2)* 3 = 218.27 MB 杂项: 128 * 9,000 * 4 /(1024 ^ 2)= 4.39 MB 因此,训练该网络的总内存为224,69 MB。 我正在使用TensorFlow,但我想缺少一些东西。我还没有参加培训,但是我很确定(根据过去的经验)正在使用的内存将比我计算的要高得多。 如果对于小批量中的每个图像,TensorFlow保持其梯度,以便稍后可以对它们进行归一化以进行单个权重/偏差更新步骤,那么我认为内存应考虑另一个532,752 * 128值(每个图像中的梯度)小批量)。如果真是这样,那么我需要更多260.13 MB来训练具有128张图像/微型批处理的模型。 您可以帮助我理解训练深度学习模型的内存注意事项吗?以上考虑对吗?