tf.identity的意义以及用例

来源:互联网 发布:android 仿淘宝购物车 编辑:程序博客网 时间:2024/05/21 23:31

最近在学习tensorflow,学到ExponentialMovingAverage时,里面有一个tf.identity操作,在Stack Overflow上看到一个很好的解释,记录一下。
原地址 : https://stackoverflow.com/questions/34877523/in-tensorflow-what-is-tf-identity-used-for

下面程序要做的是,5次循环,每次循环给x加1,赋值给y,然后打印出来

x = tf.Variable(0.0)#返回一个op,表示给变量x加1的操作x_plus_1 = tf.assign_add(x, 1)#control_dependencies的意义是,在执行with包含的内容(在这里就是 y = x)前#先执行control_dependencies中的内容(在这里就是 x_plus_1)with tf.control_dependencies([x_plus_1]):    y = xinit = tf.initialize_all_variables()with tf.Session() as session:    init.run()    for i in xrange(5):        print(y.eval())#相当于sess.run(y),由于control_dependencies的所以执行print前都会先执行x_plus_1

这个打印的是0,0,0,0,0 。也就是说没有达到我们预期的效果

如果改成这样:

x = tf.Variable(0.0)x_plus_1 = tf.assign_add(x, 1)with tf.control_dependencies([x_plus_1]):    y = tf.identity(x)#修改部分init = tf.initialize_all_variables()with tf.Session() as session:    init.run()    for i in xrange(5):        print(y.eval())This works: it prints 1, 2, 3, 4, 5.

这时候打印的是1,2,3,4,5

解释:
tf.identity是返回了一个一模一样新的tensor,再control_dependencies的作用块下,需要增加一个新节点到gragh中。有待更新。。。

原创粉丝点击