tensorflow之tf.Variable()函数

tf.Variable()函数用于创建变量(Variable),变量是一个特殊的张量(),其可以是任意的形状和类型的张量。

语法格式如下:

tf.Variable.init(initial_value, trainable=True, collections=None, validate_shape=True, name=None))

其中:

注意: 在启动图时(进行操作之前),所有的变量必须被明确定义。变量常用来储存和更新参数,在计算图过程中其值会一直保存至程序运行结束,这点正是区别于一般的张量。一般的Tensorflow张量在运行过程中仅仅是从计算图中流过,并不会被保存下来。涉及到变量的相关操作必须通过session会话控制。

特别注意:在tensorflow的世界里变量的定义和初始化是被分开的。
初始化变量:之前是用tf.initialize_all_variables()函数,但是在2017年3月2号之后,该函数不再使用,用 tf.global_variables_initializer() 替代 tf.initialize_all_variables()

tf.global_variables_initializer()用于初始化所有变量;w.initializer用于初始化单个变量。

import tensorflow as tf

w = tf.Variable([6,8,6])	#创建变量w
print(w)	#查看变量的shape,而不是值。
with tf.Session() as sess:
    sess.run(w.initializer)		#初始化变量
    print(sess.run(w))	#查看变量的值

#运行结果:
<tf.Variable 'Variable:0' shape=(3,) dtype=int32_ref>
[6 8 6]

也可以使用 tf.get_variable ()函数来定义变量。实质上,tf.Variable()是真正的定义变量,而tf.get_variable()是获取变量,主要设计目的是用于共享变量,但如果获取不到就等同于新定义变量。
此外,使用tf.Variable时,如果检测到命名冲突,系统会自己处理。使用tf.get_variable()时,系统不会处理冲突,而会报错

此外,使用tf.Variable()时,如若检测到重名现象,系统会自动处理,处理方式一般是在重名后面加上"_n"。然而,tf.get_variable()发现重名冲突直接报错。
例如:

import tensorflow as tf

V1 = tf.Variable([1,2,3],name="V1")
V2 = tf.Variable([2,3,4],name="V1")
V3 = tf.Variable([3,4,5],name="V1_1")

print("V1:",V1.name)
print("V2:",V2.name)
print("V3:",V3.name)

#运行结果:
V1: V1:0
V2: V1_1:0
V3: V1_1_1:0
import tensorflow as tf

V4 = tf.get_variable(name="V4",initializer=6868)
V5 = tf.get_variable(name="V4",initializer=8686)

#运行结果:
ValueError: Variable V4 already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:

在这里插入图片描述

以上内容,如有错误敬请批评指正!

  • 26
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值