1.基本概念
Tensorflow是一个编程系统,使用图
(graphs)来表示计算任务,图
(graphs)中的节点称之为op
(operation),一个op
获得0个或多个Tensor
,执行计算,产生0个或多个Tensor
。Tensor看作是一个n维的数组或列表。图必须在会话
(Session)里被启动。
- 使用图(graphs)来表示计算任务
- 在被称之为会话(Session)的上下文(context)中执行图
- 使用tensor表示数据
- 通过变量(Variable)维护状态
- 使用feed和fetch可以为任意的操作赋值或者从其中获取数据
2.创建图,启动图
(1)传统编程思维:只是定义了这个op,但是并没有执行!
Tensor Flow首先创建一个骨架图,其中包含所有组件。此时,没有实际的数据流入,也没有计算发生。只有在执行时,当我们运行会话时,该数据进入图并进行计算。这样考虑了整个图的结构,可以让计算变得更有效率。
import tensorflow as tf
m1=tf.constant([[3,3]]) #创建一个常量op
m2=tf.constant([[2],[3]])
product=tf.matmul(m1,m2) #创建一个矩阵乘法op,把m1和m2传入
print (product) #这里将输出一个Tensor。
(2)启动默认图,进行计算
#定义一个会话1,启动默认图
sess=tf.Session() #旧版本
#调用sees的run方法来执行矩阵乘法op
#run(product)触发了图中3个op
result=sess.run(product)
print(result) #输出结果:[[15]]
sess.close()
如上写法,必须关闭会话。使用with则无需关闭。
with语句
它使用由上下文管理器(具有特殊方法函数的对象)定义的方法来包装块的执行—上下文管理器有专用的方法函数,设置一个代码块的.__enter__()
和退出块的.__ exit __()
。
with tf.Session() as sess:
result=sess.run(product)
print(result)
(3)定义一个新的图,将它设置为默认图
tf.Graph()
创建一个新的计算图,表示为Tensor Flow对象。- 可以通过使用
tf.get_default_graph()
来检查当前设置的默认图。 - 对于给定的节点,我们可以通过使用
<node> .graph
属性查看它所关联的图 - 使用with语句和
as_default()
命令返回一个上下文管理器,使该计算图成为默认图。当使用多个图时,它会派上用场。
g = tf.Graph()
a = tf.constant(5)
print(a.graph is g)
print(a.graph is tf.get_default_graph())
with g.as_default():
b = tf.constant(5)
3.变量的使用
优化过程的作用是调整某些给定模型的参数。为此,Tensor Flow使用称为变量的特殊对象。
与其他每次运行会话时“重新填充”数据的Tensor对象不同,变量在图中保持固定状态。这很重要,因为它们的当前状态可能会影响下一次迭代中它们的变化。像其他Tensor一样,变量可以用作图中其他操作的输入。
使用变量分两个阶段完成。首先我们调用tf.Variable()
函数来创建一个变量并定义它将被初始化的值。然后,我们必须通过使用tf.global_variables_initializer()
方法运行会话来显式执行初始化操作,该方法为“变量”分配内存并设置其初始值。
(1)定义并初始化一个变量:tf.global_variables_initializer()
import t