junliang 20190301
说明:以下所有代码使用版本TensorFlow1.4.0或1.12.0版本
import tensorflow as tf
print(tf.__version__)
1.12.0
3.TensorFlow入门
3.1TensorFlow计算模型–计算图
TensorFlow是一个通过计算图的形式来表述计算的编程系统,每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。
Tensor代表张量,可以简单理解为多维数组,Tensor表明了它的数据结构。
Flow则体现了它的计算模型,表达了张量之间通过计算相互转化的过程。
TensorFlow程序一般可以分为两个阶段,第一个阶段需要定义计算图中所有的计算,第二个阶段为执行计算。
a = tf.constant([1.0, 2.0], name='a')
b = tf.constant([2.0, 3.0], name='b')
result = a + b
系统维护一个默认的计算图,通过tf.get_default_graph函数可以获取当前默认的计算图。
# 通过a.graph可以查看张量所属的计算图。因为没有特意指定,所以这个计算图应该等于当前默认的计算图。
print(a.graph is tf.get_default_graph())
True
通过tf.Graph()可以生成新的计算图,不同计算图上的张量和运算都不会共享。
1.4.0版本代码
g1 = tf.Graph()
with g1.as_default():
v = tf.get_variable("v", initializer=tf.zeros_initializer(shape=[1]))
g2 = tf.Graph()
with g2.as_default():
v = tf.get_variable("v", initializer=tf.ones_initializer(shape=[1]))
# 在计算图g1中读取变量v的取值
with tf.Session(graph=g1) as sess:
tf.global_variable_initilizer().run()
with tf.variable_scope("", reuse=True):
# 在计算图g1中,变量v的取值应该为0,所以下面这行会输出[0.]
print('g1 v='.format(sess.run(tf.get_variable("v"))))
# 在计算图g1中读取变量v的取值
with tf.Session(graph=g2) as sess:
tf.global_variable_initilizer().run()
with tf.variable_scope("", reuse=True):
# 在计算图g2中,变量v的取值应该为0,所以下面这行会输出[0.]
print('g2 v='.format(sess.run(tf.get_variable("v"))))
1.12.0版本代码
g1 = tf.Graph()
with g1.as_default():
v = tf.get_variable("v", initializer=tf.zeros_initializer(), shape=[1])
g2 = tf.Graph()
with g2.as_default():
v = tf.get_variable("v", initializer=tf.ones_initializer(), shape=[1])
# 在计算图g1中读取变量v的取值
with tf.Session(graph=g1) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("", reuse=True):
# 在计算图g1中,变量v的取值应该为0,所以下面这行会输出[0.]
print(sess.run(tf.get_variable("v", [1])))
# 在计算图g1中读取变量v的取值
with tf.Session(graph=g2) as sess:
tf.global_variables_initializer(