TensorFlow的设计理念
基于符号式编程
tensorflow先定义各种变量,然后建立一个数据流图,在数据流图中规定各个变量之间的计算关系,最后需要对数据流图进行编译,但此时数据流还是一个空客儿,里面没有任何实际数据,只有把需要运算的输入放进入后,才能在整个模型中形成数据流,从而形成输出值。
例一:
传统面向对象语言中,如。
print(8+8)
#输出结果为:16
在传统的程序操作中,运行后就执行了运算,输出16。而在tensorflow中,数据流图中的节点,实际上对应的是Tensorflow API中的一个操作,并没有真正去运行。
import tensorflow as tf
t=tf.add(8,8)
print(t)
#输出结果为:Tensor("Add:0", shape=(), dtype=int32)
定义了一个操作,但实际上并没有运行。
Tensorflow运算要放在图中,图运行只发生在会话(session)中,开启会话后,就可以用数据去填充节点进行运算,关闭会话后就不能进行计算,因为会话提供了操作运行和Tensor求值的环境,如:
import tensorflow as tf
# 创建图
a = tf.constant([5.6, 2.0])
b = tf.constant([3.0, 4.0])
c = a * b
# 创建会话
sess = tf.Session()
# 计算c
print(sess.run(c))
sess.close()