python – Tensorflow:var.eval()与var.initialized_value().eval()

当我运行以下Tensorflow命令时,我得到不同的结果.谁知道为什么?

import tensorflow as tf

sess = tf.Session()
var = tf.Variable(tf.truncated_normal([1,1], stddev=.1))
sess.run(tf.initialize_all_variables())

print var.eval(session=sess)
print var.initialized_value().eval(session=sess)

生产:

[[-0.12024114]]
[[ 0.04141031]]

解决方法:

正确地说worked out,直接评估变量和评估var.initialized_value()之间的区别在于评估var.initialized_value()将重新执行var.initializer,并且 – 作为副作用 – 修改存储在var中的值.

这就留下了一个问题:为什么我们有initialized_value?原因是它在根据另一个变量定义一个变量时有所帮助.例如,假设我们要将两个变量初始化为相同的随机值.默认情况下,tf.global_variables_initializer不指定变量初始化的顺序.因此,如果变量的初始值取决于另一个变量的值,则可能会出现错误.以下代码无法可靠地运行:

v1 = tf.Variable(tf.truncated_normal([20, 20]))
v2 = tf.Variable(v1)

init_op = tf.global_variables_initializer()
sess = tf.Session()
# The following line will non-deterministically crash with an error about
# using an uninitialized value.
sess.run(init_op)

相反,您应该根据v1.initialized_value()定义v2.这对初始化程序的执行方式施加了一个顺序,并确保首先初始化v1:

v1 = tf.Variable(tf.truncated_normal([20, 20]))
v2 = tf.Variable(v1.initialized_value())

init_op = tf.global_variables_initializer()
sess = tf.Session()
# The following line will succeed.
sess.run(init_op)

相关文章

MNIST数据集可以说是深度学习的入门,但是使用模型预测单张M...
1、新建tensorflow环境(1)打开anacondaprompt,输入命令行...
这篇文章主要介绍“张量tensor是什么”,在日常操作中,相信...
tensorflow中model.fit()用法model.fit()方法用于执行训练过...
https://blog.csdn.net/To_be_little/article/details/12443...
根据身高推测体重const$=require('jquery');const...