TensorFlow是一个采用数据流图(data flow graph),用于数值计算的开源软件库。
编程方式
Tensorflow完全采用符号式编程,将图的定义和图的运算完全分开。一般是先定义各种变量,然后建立一个数据流图,在数据流图中规定各个变量之间的计算关系,最后需要对数据流图进行编译,但是此时的数据流图还是一个空壳,里面没有任何时间数据,只有把需要的输入放进后,才能在整个模型中形成数据流,从而输出值。
import tensorflow as tf
t = tf.add(8, 9)
print(t)
控制台输出
运算都要放到图中,而图的运行只放生在会话(session)中。开启会话后,就可以用数据取填充节点,进行运算;关闭会话后,就不能进行计算了。
import tensorflow as tf
#创建图
t = tf.add(8, 9)
#创建会话
with tf.Session() as session:
#启动后进行计算
result = session.run(t)
print(t)
print(result)
控制台输出
编程语法
TensorFlow是指“张量的流动”。TensorFlow的数据流图是由节点(node)和边(edge)组成的有向无环图(directed acycline graph, DAG)。TensorFlow由Tensor和Flow两部分组成,Tensor(张量)代表了数据流图中的边,而Flow(流动)这个动作就代表了数据流图中节点所做的操作。这里由有很多基本概念,官方文档都有介绍。
import tensorflow as tf
#创建一个变量,初始化为标量2.0
scale = tf.Variable(2.0, name="scale")
#创建一个常量张量
age = tf.constant(10.0)
#创建替代任意操作的张量
input = tf.placeholder(tf.float32)
output = tf.multiply(scale * age, input)
with tf.Session() as session:
#初始化变量
init = tf.global_variables_initializer()
session.run(init)
print (session.run([output], feed_dict={input:[7.]}))
备注
在所有计算完成之后,需要明确调用Session.close函数来关闭会话并释放资源。但是当程序因为异常而退出时,关闭会话的函数可能就不会被执行从而导致资源泄漏。为了解决异常退出时资源释放的问题,Tensorflow可以通过Python的上下文管理器来使用会话。
with tf.Session() as session:
#使用创建好的会话来计算结果
session.run(...)
#不需要调用“Session.close()函数来关闭会话”
#当上下文退出时会话关闭和资源释放也自动完成