TensorFlow是否重复计算不同fetches中的公共操作?极端场景求证
TensorFlow会重复计算fetches中的公共操作吗?
嘿,这个问题问得挺有意思,刚好我对TensorFlow的执行逻辑摸得比较透,来给你唠明白~
答案很明确:不会重复计算,哪怕是你说的tf.Session().run(fetches=[a,a], feed_dict=feed_dict)这种极端场景,TensorFlow也只会把a对应的计算执行一次,然后把结果复制两份返回给你,绝对不会傻乎乎地跑两遍相同的运算。
为啥会这样?核心在于TensorFlow的计算图执行机制:
- 当你调用
session.run()时,它会先分析所有fetches依赖的所有节点,构建一个最小的子图; - 然后对这个子图里的操作做去重处理,每个必要的操作节点只会被调度执行一次;
- 最后把所有fetches需要的结果收集起来返回,不管你同一个张量被请求多少次,都是用同一份计算结果。
这种设计其实是为了性能优化,避免无意义的冗余计算,毕竟重复跑相同的操作既费时间又占资源嘛。
内容的提问来源于stack exchange,提问作者figs_and_nuts
相关产品推荐
相关产品推荐

