#-*-coding:utf-8-*-
import tensorflow as tf
#创建变量op
#初始化的值
intit_value_1=tf.random_normal(
dtype=tf.float64,
shape=[2,2],
stddev=1.0,
mean=0.0)
intit_value_2=tf.random_normal(
dtype=tf.float64,
shape=[2,2],
stddev=1.0,
mean=0.0)
#不能通过指定name参数来让var_1与var_2相同--指定空间的名称,都是唯一的
var_1=tf.Variable(initial_value=intit_value_1,name='var')
var_2=tf.Variable(initial_value=intit_value_2,name='var')
print(var_1)
print(intit_value_1)
res=var_1.assign_add([[1.0,1.0],[1.0,1.0]])
print('res',res)
print(var_2)
print(intit_value_2)
#开启会话,执行op
#初始化变量op
intit_op=tf.global_variables_initializer()
with tf.Session() as ss:
# 显示初始化变量op
ss.run(intit_op)
print(ss.run(res))#如果是重新赋值或者加一个值,之后的op先运行,那么会更改原来的变量值
#如果是重新赋值或者加一个值,之后的op后运行,那么不会更改原来的变量值
#变量op需要显示的初始化
print(ss.run(var_1))
print(ss.run(var_2))
#变量op需要显式的初始化
#函数A-a
#函数B-a
#globle
#在tensorflow里面实现变量共享--需要用到一个叫命名空间的东西
#命名空间
#共享变量---需要使用命名空间,而且需要指定reuse=tf.AUTO_REUSE,
#还要将指定空间的名称设为一样的,这样才能共享
with tf.variable_scope('variable',reuse=tf.AUTO_REUSE):
# intit_value初始化的值
intit_value_1 = tf.random_normal(
dtype=tf.float64,
shape=[2, 2],
stddev=1.0,
mean=0.0)
intit_value_2 = tf.random_normal(
dtype=tf.float64,
shape=[2, 2],
stddev=1.0,
mean=0.0)
# 不能通过指定name参数来让var_1与var_2相同--指定空间的名称,都是唯一的
# var_1 = tf.Variable(initial_value=intit_value_1, name='var')
# var_2 = tf.Variable(initial_value=intit_value_2, name='var')
#如果要实现共享,initializer必须要显示指定
var_1=tf.get_variable(initializer=intit_value_1,dtype=tf.float64,name='var')
var_2 = tf.get_variable(initializer=intit_value_2,dtype=tf.float64, name='var')
with tf.Session()as ss:
ss.run(tf.global_variables_initializer())
print(ss.run([var_1,var_2]))