起因是看到了这么一个帖子:
http://www.cocoachina.com/cms/wap.php?action=article&id=86347
简短来说就是下面的代码 运行起来结果十分的怪异!!!
import tensorflow as tf a = tf.constant(1.) mean_a, mean_a_uop = tf.metrics.mean(a) with tf.control_dependencies([mean_a_uop]): mean_a = tf.identity(mean_a) sess = tf.InteractiveSession() tf.global_variables_initializer().run() tf.local_variables_initializer().run() for _ in range(10): print(sess.run(mean_a))
在CPU上运行:
第一次运行结果:
第二次运行结果:
第三次运行结果:
第四次运行结果:
第五次运行结果:
可以发现上述代码在CPU环境下运行每次结果均不太相同,而且离希望得到结果都不一样。
希望的结果为 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
在GPU上运行:
第一次结果:
第二次结果:
第三次结果:
第四次结果:
第五次结果:
可以发现上述代码在GPU环境下运行每次结果均相同,但都不是希望的结果。
希望的结果为 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
以上则为所引帖子中所提问题。
==================================================================
由上面的问题做了写尝试:
1.
import tensorflow as tf a = tf.constant([1.0,]) mean_a, mean_a_uop = tf.metrics.mean(a) sess = tf.InteractiveSession() tf.global_variables_initializer().run() tf.local_variables_initializer().run() for _ in range(10): print(sess.run([mean_a_uop, mean_a])) print(‘result:--------------------‘) print(sess.run(mean_a))
最终的均值 mean_a 为1.0, 结果正确。
过程中 mean_a_uop 为全局更新操作,结果一直为1.0,结果正确。
过程中 均值 mean_a 在浮动,不一直为1.0, 结果不正确。
2.
import tensorflow as tf import numpy as np a = tf.constant([1.]) mean_a, mean_a_uop = tf.metrics.mean(a) with tf.control_dependencies([mean_a_uop]): op=tf.no_op() sess = tf.InteractiveSession() tf.global_variables_initializer().run() tf.local_variables_initializer().run() for _ in range(10): print(sess.run([mean_a, op,mean_a_uop])) print(‘result: --------------------‘) print(sess.run(mean_a))
最终的均值 mean_a 为1.0, 结果正确。
过程中 mean_a_uop 为全局更新操作,结果一直为1.0,结果正确。
过程中 均值 mean_a 在浮动,不一直为1.0, 结果不正确。
原文:https://www.cnblogs.com/devilmaycry812839668/p/12693408.html