在模型训练初始化完成后,我们交替的使用正向传播和反向传播,并根据反向传播计算的梯度迭代模型参数。既然我们在反向传播中使用了正向传播中计算得到的中间变量来避免重复计算,那么这个复用也导致了正向传播结束后,不能立即的释放中间变量的内存。这也训练要比预测占用更多内存的重要原因 。
另外,需要指出的是,这些中间变量的个数大体上和网络层数相关,每个变量的大小与批量大小和输入个数也是线性相关的 ,他们是导致 较深的神经网络使用较大批量训练时容易超内存的主要原因 。
在模型训练初始化完成后,我们交替的使用正向传播和反向传播,并根据反向传播计算的梯度迭代模型参数。既然我们在反向传播中使用了正向传播中计算得到的中间变量来避免重复计算,那么这个复用也导致了正向传播结束后,不能立即的释放中间变量的内存。这也训练要比预测占用更多内存的重要原因 。
另外,需要指出的是,这些中间变量的个数大体上和网络层数相关,每个变量的大小与批量大小和输入个数也是线性相关的 ,他们是导致 较深的神经网络使用较大批量训练时容易超内存的主要原因 。