#tf.Graph()函数用来生成新的计算图。不同计算图中的张量和运算不会共享
#表示实例化了一个类,一个用于 tensorflow 计算和表示用的数据流图,通俗
#来讲就是:在代码中添加的操作(画中的结点)和数据(画中的线条)都是画
#在纸上的“画”,而图就是呈现这些画的纸,你可以利用很多线程生成很多张图,但是默认图就只有一张。
G1 = tf.Graph()
with G1.as_default():
#在计算图G1中定义变量v,并设置初始值为1
v = tf.get_variable(“v”,shape=[1],initializer = tf.zeros_initializer)
G2 = tf.Graph()
with G2.as_default():
v = tf.get_variable(“v”,shape=[1],initializer = tf.ones_initializer)
with tf.Session(graph=G1) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("",reuse=True):
print(sess.run(tf.get_variable(“v”)))
with tf.Session(graph=G2) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("",reuse=True):
print(sess.run(tf.get_variable(“v”)))
#tf.Graph.device()函数指定运行计算的设备
g = tf.Graph()
with g.device("/gpu:0"):
result = a + a
#通过集合(collection)管理不同的资源,tf.add_to_collection函数可以将资源假如到一个或者多个集合
#然后通过tf.get_collecton()获取一个集合中的所有的资源
#一个张量中保存了三个属性: 名字(name)、维度(shape)、类型(type)
a = tf.constant([1.0,2.0],name = “a”)
#输出: Tensor(“a_1:0”, shape=(2,), dtype=float32) 其中a_1:0表示a_1是节点名称 0表示当前张量来自节点的第0个输出
print(a)
#用dtype指定数据的类型
b = tf.constant([1,2],name=“a”,dtype=tf.float32)
#.get_shape()用来获取张量维度信息,免去人工计算麻烦
print(b.get_shape())
#会话,拥有并管理Tensorflow运行时的所有资源,所有计算完成后要关闭会话来帮助回收资源,否则出现资源泄漏
sess = tf.Session()
sess.run(a)
sess.close()
#使用python上下文管理会话,避免了退出时资源释放问题
with tf.Session() as sess:
#下面两句有同样的功能
sess.run(a)
print(a.eval(session=sess))
#tf.Variable()作用就是保存和更新神经网络中的参数,tf给了一些随机数生成器
#如tf.random_normal() tf.truncated_normal() tf.random_uniform() tf.random_gamma()
a1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) #所有变量初始化
sess.run(a1.initializer) #初始化
#用其它变量初始化新的变量
w1 = tf.Variable(tf.zeros([3])) #[0., 0., 0.]
w2 = tf.Variable(w1.initialized_value())
w2 = tf.Variable(tf.zeros([2])) #[0., 0.]
with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) #所有变量初始化
print(sess.run([w1,w2]))
#placeholder机制用于提供输入数据,相当于定义一个位置,位置中的数据在程序运行时候指定
#通过feed_dict来指定数据,feed_dict是一个字典(map)形如{x:,y:}