参考文献
简述
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用于初始化单个变量。
此外: 也可以使用 tf.get_variable ()函数来定义变量。实质上,tf.Variable()是真正的定义变量,而tf.get_variable()是获取变量,主要设计目的是用于共享变量,但如果获取不到就等同于新定义变量。
此外,使用tf.Variable时,如果检测到命名冲突,系统会自己处理。使用tf.get_variable()时,系统不会处理冲突,而会报错
此外的此外,使用tf.Variable()时,如若检测到重名现象,系统会自动处理,处理方式一般是在重名后面加上"_n"。然而,tf.get_variable()发现重名冲突直接报错。
实例
使用tf.Variable()创建变量
import tensorflow._api.v2.compat.v1 as tf
tf.disable_v2_behavior()
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()
import tensorflow._api.v2.compat.v1 as tf
tf.disable_v2_behavior()
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
'''
小结
- 一般情况使用参数initial_value与name就足够了
- tf.get_variable()与tf.Variable()都用来定义变量的