简介
TensorFlow的使用方式不像传统编程一样,需要用到哪个功能直接调用该函数,传入给定数据,然后接收函数返回结果。
它更像一个画板,在画板上画上各种线条,而色彩却可以随意上色
我自己来理解的话
就像UE4中的材质蓝图,先是使用各种计算节点与常量、变量节点去描述整个计算结构,等到真正程序运行的时候才会真正的计算,并得出结果。
也像FPGA中的Verilog HDL语言,通过语言去描述数字电路结构,每一个逻辑门的连接方式,去构建一个庞大的数字集成电路,但要等到上电运行的时候才会得出结果。
张量
Tensorflow中的Tensor就是张量的意思,实际上他就是个多维数组
但是要注意他描述的只是一个多维数组的结构,而不是一个真正的多维数组
一个常量
a = tf.constant([1.0,2.0],name="a")
一个变量
a = tf.Variable([1,2],name="a")
会话
在所有的结构描述完毕后,当需要运行时,就需要创建一个会话
创建会话的作用就像将逻辑载入到FPGA中一样
sess = tf.Session()
而创建完会话还需要指定运算的对象
sess.run(...)
(…)就是需要计算的对象
当然计算完毕后需要关闭会话释放资源
sess.close()
计算图
如果说TensorFlow是一个画板,那么计算图就是这个画板上的每一张纸,每一个计算图都可以构建出不同的画,他们之间没有关联。
处于计算图上的每个张量、运算都不会共享
import tensorflow as tf
g1 = tf.Graph() #创建一个新的计算图名为 g1
with g1.as_default(): #将g1作为默认图
a = tf.constant([1.0,2.0],name="a") #在g1中声明常量a
b = tf.constant([3.0,4.0],name="b") #在g1中声明常量b
res1 = a + b #在g1中描述a+b的计算
g2 = tf.Graph() #创建一个新的计算图名为 g2
with g2.as_default(): #将g2作为默认图
a = tf.constant([5.0,6.0],name="a") #在g2中声明常量a
b = tf.constant([7.0,8.0],name="b") #在g2中声明常量b
res2 = a + b #在g2中描述a+b的计算
with tf.Session(graph=g1) as sess: #为g1创建会话
print(sess.run(res1)) #计算res1的结果并打印出来
with tf.Session(graph=g2) as sess: #为g2创建会话
print(sess.run(res2)) #计算res2的结果并打印出来
运行结果:
runfile('C:/Users/Administrator/Desktop/a3/untitled0.py', wdir='C:/Users/Administrator/Desktop/a3')
[4. 6.]
[12. 14.]