1、计算图的使用
TensorFlow程序一般分为两段,一段是定义计算图的计算,第二阶段是执行计算。
import tensorflow as tf
a = tf.constant([1.0,2.0],name = 'a')
b = tf.constant([2.0,3.0],name = 'b')
result = a+b
print(result)
在TensorFlow的程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph函数就可以获取当前默认的计算图。
#通过a.graph可以查看张量所属的计算图,因为没有指定,所以这个计算图应该等于当前默认的计算图
print(a.graph is tf.get_default_graph()) #结果为True
除了使用默认图,还可以通过tf.Graph()函数来生成新的计算图。不同计算图上的张量不会共享。
#在计算图g1中定义变量V,并设置初始值为0.
g1 = tf.Graph()
with g1.as_default():
v = tf.get_variable('v',initializer = tf.zeros(shape=(1,)))
print(g1 is tf.get_default_graph())
#在计算图g2中定义变量V,并设置初始值为1
g2 = tf.Graph()
with g2.as_default():
v = tf.get_variable('v',initializer = tf.ones(shape=(1,)))
print(g2 is tf.get_default_graph())
#读取计算图g1中的变量v
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')))
#读取计算图g2中的变量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')))
2、张量
从功能上来说,张量可以简单的理解为多维数组。其中零阶张量表示为标量(scalar),一阶张量表示为向量(vector),也就是一维数组;但是张量在实现中,并不真正保存数字,而是保存的是如何得到这些数字的计算过程。
import tensorflow as tf
a = tf.constant([1.0,2.0],name = 'a')
b = tf.constant([2.0,3.0],name = 'b')
result = a+b
print(result)
'''输出:Tensor('add:0',shape=(2,),dtype = float32)'''
TensorFlow计算的结果并不是一个具体的数字,而是一个张量的结构。主要包含三个属性:name,shape,type。