tensorflow学习笔记--Variable变量

tf.Variable() 变量:创建、初始化、保存、加载。
1.创建
Variable()构造函数需要变量的初始值,即任何形状和类型的张量Tensor。初始值定义其形状和类型,一旦构建,变量的类型和形状即确定。如果想要稍后改变变量的形状,需要带上validate_shape=False的赋值操作。

#创建一个变量
w=tf.Variable(tensor,name=)
#运算
y=tf.matmul(w,其他变量)
#使用assign()为变量赋予新的值
w.assign(w+1.0)
w.assign_add(1.0)

2.初始化
在启动图之前,Variable必须被初始化
初始化方法:
#运行其初始化器操作来初始化variables

with tf.Session() as sess:
   #run the variable initializer
   sess.run(w.initializer)

#运行一个赋值操作给Variable赋值,从而对自己进行初始化操作

最常见的初始化模式是使用一个便利函数global_variables_initializer( ),将一个可以初始化所有variable的操作添加到图中(the graph)。然后启动图(graph)后运行该操作

# Add an Op to initialize global variables.(添加一个操作去初始化所以variable)
init_op = tf.global_variables_initializer()#这是一个初始化全部变量的操作
# Launch the graph in a session.(在一个session中启动图)
with tf.Session() as sess:    
    # Run the Op that initializes global variables.(运行初始化全局Variable的操作)
sess.run(init_op)    
# ...you can now run any Op that uses variable values...(现在你可以运行所有使用任何variable值的操作)

如果需要创建一个取决于另一个variable的初始值的variable,请使用另一个variable的initialized_value()。 这样可以确保以正确的顺序初始化变量。

# Initialize 'v' with a random tensor.
v = tf.Variable(tf.truncated_normal([10, 40]))
# Use `initialized_value` to guarantee that `v` has been
# initialized before its value is used to initialize `w`.
# The random values are picked only once.
w = tf.Variable(v.initialized_value() * 2.0)

以上参考了:https://blog.csdn.net/eml_jw/article/details/70213675?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166159567316782248571314%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166159567316782248571314&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-3-70213675-null-null.142v42pc_rank_34_1,185v2control&utm_term=tensorflow.variable&spm=1018.2226.3001.4187

例子如下所示:

import tensorflow as tf

tf.compat.v1.disable_eager_execution()#保证sess.run()能够正常运行

state=tf.Variable(0,name="counter")#给这个变量取一个计数器的name
print("state.name=",state.name)
one=tf.constant(1)

#运算,每次计数器加一
#state.assign(state,one)
#state.assign_add(one)
new_value=tf.add(state,one)
updata=tf.compat.v1.assign(state,new_value)#更新变量的值

#初始化
init=tf.compat.v1.initialize_all_variables()#初始化所有的变量

with tf.compat.v1.Session() as sess:
    sess.run(init)#激活
    for _ in range(3):
        sess.run(updata)
        print(sess.run(state))

注意!!tensorflow2.0以上的版本会遇上不兼容的问题,可以在原来代码前面加上tf.compat.v1.
或者直接将import tensorflow as tf
改成

import tensorflow.compat.v1 as tf

你可能感兴趣的:(tensorflow,学习,python)