import tensorflow as tf
# 变量初始化方式以及变量必须指定初始值
a = tf.constant(value=3.0, dtype=tf.float32, name='a')
b = tf.Variable(initial_value=2.0, dtype=tf.float32, name='b') # 变量必须指定初始值。
c = tf.add(a, b)
d = tf.subtract(c, a)
# 相当于在图中添加一个初始化全局变量的操作
init_op = tf.global_variables_initializer()
with tf.Session(graph=tf.get_default_graph(),
config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True))\
as sess:
# 1.allow_soft_placement置为True指:设备不行的话,重新找设备2.log_device_placement=True表示运行时打印日志
init_op.run() # (作用同下行)这行代码也是初始化运行操作,但要求明确给定当前代码快对应的默认Session(tf.get_default_session)是哪个,底层使用默认Session
# sess.run(init_op)
# print(sess.run(c)) # (作用同下行)
# print(c.eval())
print(sess.run(fetches=[c, d])) # print(sess.run([c, d])) 同时获取多个op操作的值
'''
# 变量依赖和assign
w1 = tf.Variable(tf.random_normal(shape=[10], stddev=0.5, dtype=tf.float32, seed=3), name='w1')
# 变量值服从正态分布,形状是10维数组(其实就是一个数组,里面有10个元素),方差是0.5,随机种子给定使得每次运行产生的数据一致
a = tf.constant(2.0, dtype=tf.float32)
w = tf.assign(w1, w1.initialized_value()*0.0) # 修改w1的值
w2 = tf.Variable(w1.initialized_value()*a, name='w2') # 变量依赖的案例
# 注意哦:最好写成w1.initialized_value()*a,不要写成直接写成w1*a,以免出错
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
print(sess.run(w1)) # [ 0.53083104 -0.43928915 0.05593609 ...]
sess.run(w)
print(sess.run(w1)) # [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
print(sess.run(w2)) # [ 1.0616621 , -0.8785783 , 0.11187217...],说明w1变了,但w2依赖的w1任然是原来没有被修改的w1的值
'''
tensorflow变量的用法、修改
最新推荐文章于 2022-03-23 23:05:23 发布