Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Tensorflow中将网络向前转发多次,然后只向后退一次?_Tensorflow_Deep Learning - Fatal编程技术网

如何在Tensorflow中将网络向前转发多次,然后只向后退一次?

如何在Tensorflow中将网络向前转发多次,然后只向后退一次?,tensorflow,deep-learning,Tensorflow,Deep Learning,我想运行一个网络多次,平均损失,然后向后一次更新权重。在这种情况下,我可以节省gpu内存,并具有利用更大批量的优势 如何实现这一目标?如何以这种方式节省gpu内存?据我所知,向后传球需要输入数据和特征图进行梯度计算,我同意@weitang114。这样不会节省GPU内存。但是,您可以执行多个前后传递并聚合渐变,而无需执行SGD更新步骤。收集“足够”的渐变后,使用聚合的渐变进行更新。不过,这需要一些手工。为什么我们不能用这种方式保存GPU内存?我唯一需要记录的是每次跑步的损失。网络是否缓存其他中间状

我想运行一个网络多次,平均损失,然后向后一次更新权重。在这种情况下,我可以节省gpu内存,并具有利用更大批量的优势


如何实现这一目标?

如何以这种方式节省gpu内存?据我所知,向后传球需要输入数据和特征图进行梯度计算,我同意@weitang114。这样不会节省GPU内存。但是,您可以执行多个前后传递并聚合渐变,而无需执行SGD更新步骤。收集“足够”的渐变后,使用聚合的渐变进行更新。不过,这需要一些手工。为什么我们不能用这种方式保存GPU内存?我唯一需要记录的是每次跑步的损失。网络是否缓存其他中间状态?反向传播依赖于所有层和所有示例的激活来计算相对于权重的损失梯度。仅保存一批示例的损失,将不允许恢复该批次在权重上产生的梯度。这就是为什么我建议计算批次的梯度并保存(聚合)它们。然后,您可以在运行之间“丢弃”隐藏层激活。