1.tensorflow 中的基本概念
1.1 计算图
计算图是Tensorflow中最基本的一个概念,TF中所有计算都会被转化为计算图上的节点。
Tensorflow是一个通过计算图的形式来表述计算的编程系统,每一个计算都是计算图上的一个节点,节点之间的边描述了计算的依赖关系。
在Tensorflow程序中,系统会自动维护一个默认的计算图,通过 tf.get_default_graph 函数可获取当前默认的计算图。
#判断张量a所属计算图是否为默认计算图,输出为True
import tensorflow as tf
a=tf.constant([1.3,2.1],name="a")
b=tf.constant([1.3,2.1],name="a")
result=a+b
print(a.graph is tf.get_default_graph())
TF支持通过tf.Graph函数生成新的计算图。不同计算图上张量和运算都不共享。
import tensorflow as tf
g1 = tf.Graph()
# 在计算图g1中定义变量"v",初始值为0
# tf.zeros_initializer()(shape= [1])为新版tensorflow写法,与教材上有所区别
with g1.as_default():
v = tf.get_variable(
"v", initializer=tf.zeros_initializer()(shape= [1]))
with tf.Session(graph=g1) as sess:
# tf.initialize_all_variables().run() 是必须的
tf.initialize_all_variables().run()
with tf.variable_scope("", reuse=True):
# 在g1中变量v值为0,输出为0
print(sess.run(tf.get_variable("v")))
张量在TF中并不直接采用数组的形式,只是对TF中运算结果的引用。在张量中并没有保存数字,而是保存如果得到数字的计算过程。以向量加法为例子,运行如下代码,并无加法的结果,而会得到对结果的一个引用,
import tensorflow as tf
a=tf.constant([1.3,2.1],name="a")
b=tf.constant([1.3,2.1],name="a")
result=a+b
print(result)
#输出为Tensor("add:0", shape=(2,), dtype=float32)
补充:张量的维度
对于一个张量A,如果shape=[2,2],表示该张量有两个维度,第一个维度元素个数为2,第二个维度元素个数也为2
例如 [[1,2],[3,4]]
1.2会话(session)
会话拥有并管理TF程序运行时的所有资源。
TF可以通过python的上下文管理器来使用会话。
with tf.Session as sess:
sess.run(.....)