tensorflow系统架构 由底层向上:
网络层:grpc(Remote Procedure Calls。google远程调用框架)、远程直接数据存取。 和 设备管理层:cpu,gpu,fpga,对上层提供统一的接口
数据操作层:卷积函数、激活函数
图计算层:本地计算图、分布式计算图
API层:核心API、python、C++,java、Go
应用层:训练相关类库、预测相关类库
设计理念:
图的定义和运行完全分开。tensorflow涉及的运算要放在图中。而图的运行放在会话session中,session关闭后不能进行运算。
例:
'''
import tensorflow as tf #创建图
a = tf.constant([1.0 , 2.0])
b = tf.constant([3.0 , 4.0])
c = a*b
sess = tf.Session() #创建session
print(sess.run(c)) #在session中进行运算
sess.close() #session关闭
'''
计算过程:
输入,经过塑形,一层一层向前传播运算。
Relu层里会有两个参数。Wh1 和 Bh1 .输出前用relu(rectified linear units 整流线性单元) 激活函数做非线性处理。
然后进入logit输出层,学习两个参数Wsm 和 Bsm 。 用 softmax 计算输出结果中各个类别的概率分布。 用交叉熵度量两个概率分布(原样本和输出结果) 之间的相似性
然后开始计算梯度,这里需要Wh1 , Bh1 , Wsm , Bsm 以及交叉熵的结果。
然后进入SGD训练。这个过程也称为反传播。从上往下计算每一层参数。依次进行更新。也就是说,计算和更新的顺序为: Bsm , Wsm , Bh1 , Wh1
图示 :