gpt4 book ai didi

graph - Tensorflow图: Are Tensorflow graphs DAG?张量变量中的assignAdd操作会发生什么

转载 作者:行者123 更新时间:2023-12-02 14:48:25 25 4
gpt4 key购买 nike

这个图是如何非循环的?分配添加操作将 x 添加到自身。

import tensorflow as tf
sess = tf.Session()
x = tf.Variable(1300,name="x")
y = tf.Variable(200, name="y")
z = tf.add(x, y,name="z")
b = x.assign_add(z)
init = tf.initialize_all_variables()
writer = tf.train.SummaryWriter("/tmp/logdir", sess.graph)
sess.run(init)
print(sess.run(b))

TensorBoard Graph for the computation

显然,AssignAdd 和 X 之间存在双向边缘。

为什么 X 作为变量被描述两次?

最佳答案

Olivier points out ,您的程序的图形是 DAG。图形可视化工具在渲染图形时采取了一些自由措施,使其更易于理解。特别是,运行时本身没有“双向”边,但 TensorFlow 包含变量的“引用边”,这就像将可变值(如指针或可变引用)传递到 C/C++ 函数中,如下所示它们允许接收者修改用于变量的相同底层存储。

请注意,TensorFlow graphs to contain one or more cycles 是合法的。 ,甚至嵌套循环。 tf.while_loop()函数提供了一种创建结构化循环来表示迭代计算的方法,TensorFlow 可以为此计算梯度。但是,对于简单变量的使用,不需要循环。

关于graph - Tensorflow图: Are Tensorflow graphs DAG?张量变量中的assignAdd操作会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37571518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com