常量:
在运行过程中值不会改变的单元,在TensorFlow中无须进行初始化操作创建语句:constant_name = tf.constant(value)
变量:
在运行过程中值会改变的单元,在TensorFlow中须进行初始化操作创建语句:name_variable = tf.Variable(value, name)
个别变量初始化:init_op = name_variable.initializer()
所有变量初始化:init_op = tf.global_variables_initializer()
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior() # 解决方案:注释tf的引用,换为兼容模式。
node1 = tf.Variable(3.0, tf.float32, name='node1')
node2 = tf.Variable(4.0, tf.float32, name='node2')
result = tf.add(node1, node2)
sess = tf.Session()
# 变量初始化/所有变量初始化
init = tf.global_variables_initializer()
sess.run(init) # 必须执行一遍,才算初始化
print(sess.run(result))
变量赋值:
与传统编程语言不同,TensorFlow中的变量定义后,一般无需人工赋值,系统会根据算法模型,训练优化过程中自动调整变量对应的数值。
后面再机器学习模型训练时会更能体会,比如权重Weight变量w,经过多次迭代,会自动调整。
特殊情况需要人工更新的,可用变量赋值语句:update_op = tf.assign(variable_to_be_updated, new_value)
# 变量赋值运算
value = tf.Variable(0, name = "value")
one = tf.constant(1)
new_value = tf.add(value, one)
update_value = tf.assign(value, new_value) # tf.assign把new_value的值赋给value
init1 = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init1)
for i in range(10):
sess.run(update_value)
print(sess.run(value))
|