【9.3】tensorflow--tf.global_variables_initializer | tf.initializers.global_variables |tf.initializers.global_variables

  • tf.initializers.global_variables
  • tf.global_variables_initializer
  • tf.initialize_all_variables (该函数已经在2017-03以后的版本被踢除)

三个函数都是一个意思,初始化所有的变量

1. 变量初始化

变量初始化的标准形式:

init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

当然也可简写为:

tf.Session().run(tf.initialize_all_variables())

如何有选择地初始化部分变量呢?使用 tf.initialize_variables(),比如要初始化v_6, v_7, v_8三个变量:

init_new_vars_op = tf.initialize_variables([v_6, v_7, v_8])
sess.run(init_new_vars_op)

2. 识别未被初始化的变量

用 try & except 语句块捕获:

uninit_vars = []
for var in tf.all_variables():
    try:
        sess.run(var)
    except tf.errors.FailedPreconditionError:
        uninit_vars.append(var)

init_new_vars_op = tf.initialize_variables(uninit_vars)

3. 变量的更新

>> state = tf.Variable(1, name='counter')
>> add_one = tf.add(state, tf.constant(1))
>> update = tf.assign(state, add_one)
>> with tf.Session() as sess:
        sess.run(tf.gloabl_variables_initializer())
        sess.run(state)
        for _ in range(3):
            sess.run(update)
            print(sess.run(state))

二、报错

报错1

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable_1

原因:

在初始的代码中,由于没有使用tf.global_variables_initializer()函数来对变量初始化,导致代码出现错误

解决办法:

在代码中加入tf.global_variables_initializer()函数来对数据进行初始化之后便可解决

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn