何时使用变量而不是图形节点将中间结果存储在TensorFlow中更好?

时间:2016-06-19 22:42:04

标签: tensorflow

将变量存储在变量中而不是依赖于图中的节点是否有任何优势,除了变量在图的多次运行中持续存在并且可以共享?资源管理是否可以更好地支持变量与图节点?

1 个答案:

答案 0 :(得分:3)

来自@YaroslavBulatov:

如果您需要在图表的开头存储张量以便稍后重复使用:

        x
        |            
      conv1   ------        
        |           | 
      conv2         |  
        |           |
      conv3         |  
        |          loooong dependency
       ...          | 
        |           |
     deconv1        |
        |           |
        +   --------
        |
       res

在这里,您在开始时计算conv1,并在计算res时在图表中稍后重复使用。

实现这一目标的最佳方法实际上是什么都不做,让TensorFlow处理这种长期依赖。

调用sess.run(res, feed_dict={x: ...})时,TensorFlow会计算不同的图层conv1conv2,...,并存储稍后计算res所需的图层(此处{ {1}})。

我认为这与向后传播的机制相同,其中TensorFlow需要在内存中保留激活以便稍后计算渐变。