gpt4 book ai didi

python - tf.global_variables_initializer() 在幕后做了什么?

转载 作者:太空狗 更新时间:2023-10-29 17:59:09 28 4
gpt4 key购买 nike

有很多案例(herehere)TensorFlow 用户添加

init_op = tf.global_variables_initializer()

在定义任何变量或操作之前,然后按照以下行出现错误

Attempting to use uninitialized value

有解释here但它没有提及底层的 tf.global_variables_initializer 调用。它几乎是在批量复制 TF API。本题侧重于部分用户调用sess.run(init_op)时,仍然存在未初始化的值。示例代码和对 tf.global_variables_initializer 的分析会很棒。

最佳答案

TensorFlow API 在 tf.global_variables_initializer 上有一个非常短的部分.它只是提到:

This is just a shortcut for variable_initializer(global_variables()).

追踪到 tf.variables_initializer ,我们可以看到这个函数的用法是这样的:

tf.variables_initializer(var_list, name='init')

这意味着我们将 tf.global_variables 作为 var_list 隐式传递给 tf.variables_initializer。如果我们在调用 tf.global_variables_initializer 之前没有定义任何变量,则 var_list 本质上是空的。下面的代码说明了这一点:

import tensorflow as tf

with tf.Graph().as_default():
# Nothing is printed
for v in tf.global_variables():
print v

init_op = tf.global_variables_initializer()
a = tf.Variable(0)
b = tf.Variable(0)
c = tf.Variable(0)

# 3 Variables are printed here
for v in tf.global_variables():
print v

with tf.Session() as sess:
sess.run(init_op)
print sess.run(a)

打印出来的3个变量是这样的:

<tf.Variable 'Variable:0' shape=() dtype=int32_ref>
<tf.Variable 'Variable_1:0' shape=() dtype=int32_ref>
<tf.Variable 'Variable_2:0' shape=() dtype=int32_ref>

按原样运行上面的代码会导致上面提到的错误:

Attempting to use uninitialized value

init_op 的位置调到 a b c 之后:

  a = tf.Variable(0)
b = tf.Variable(0)
c = tf.Variable(0)
init_op = tf.global_variables_initializer()

会让它工作。

关于python - tf.global_variables_initializer() 在幕后做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047929/

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