TensorFlow 学习(三)—— Variables、Session、初始化

0. tf.initialize_all_variables()/tf.global_variables_initializer()

What are the differences between tf.initialize_all_variables() and tf.global_variables_initializer()

注意对于 tf.initialize_all_variables() 接口,TensorFlow 文档有一个重要说明:

tf.initialize_all_variables(): THIS FUNCTION IS DEPRECATED. It will be removed after 2017-03-02. Instructions for updating: Use tf.global_variables_initializer instead.

  • tf.initialize_all_variables() 该函数将不再使用,在 2017年3月2号以后;
  • tf.global_variables_initializer() 替代 tf.initialize_all_variables()

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)
    
  • 单个变量初始化:

    w = tf.Variable(tf.random_uniform([2, 2]))
    w_init = w.initializer		# w.initializer 是一个 operation,而不是函数
    with tf.Session() as sess:
    	sess.run(w_init)
    

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)
  • <a href=“http://stackoverflow.com/questions/35164529/in-tensorflow-is-there-any-way-to-just-initialize-uninitialised-variables”, target="_blank">In TensorFlow is there any way to just initialize uninitialised variables?

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))

4. Session

A Session object encapsulates the environment in which Tensor objects are evaluated. 一个会话对象(session object)封装了 Tensor 对象待评估(evaluate)的环境信息。

>> a = tf.constant(5.)
>> b = tf.constant(6.)
>> c = a*b
>> with tf.Session() as sess:
		print(sess.run(c))
		print(c.eval())

在当前活动会话中(currently active session)c.eval() 等价于 sess.run©,是其语法糖形式。

常见的 tf.Session()

  • tf.InteractiveSession():ipython 下的一种默认会话;
  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值