Tensorflow瞎搞
Tensorflow为张量从流图的一端流动到另一端的计算过程,Tensorflow也可以看成是将复杂的数据结构传输至人工智能神经网络中进行分析和处理的系统。
张量概念是矢量概念的推广,矢量是一阶张量。张量是一个可用来表示一些矢量、标量和其他张量之间的线性关系的多线性函数。
一阶张量来表示向量,如v=[1,2,3,4,5];用二阶张量表示矩阵,如m=[[1,2,3],[4,5,6],[7,8,9]]
在介绍flow之前,需要知道的是在Tensorflow中,数据流图使用“结点”和“边”的有向图来描述数学计算。“结点”一般用来表示施加的数学操作,但也是可以表示数据输入(feed in)的起点和输出的终点(push out),或者是读取/写入持久变量的终点。“边”表示“节点”之间的输入/输出关系。
当张量从图中流过时,就产生了“flow”,一旦输入端的所有张量准备好,节点将被分配到各种计算设备异步并行地完成执行运算,即数据开始飞起来。
边分为两种,一是正常边,即数据tensor流动的通道,在正常边上可以自由地计算数据。
第二种边是一种特殊边,又称为“控制依赖”边,其作用是控制节点之间相互依赖,在边的上一个节点完成运算前,特殊的节点不会被执行,即数据的处理要遵循一定的顺序。其次特殊边还有一个作用是为了多线程运行数据的执行,让没有前后依赖顺序的数据计算能够分开执行,最大效率地利用系统设备资源。
最后需要介绍地一个概念就是“会话”(session)。会话是tensorflow的主要交互方式,一般而言,Tensorflow处理数据的流程是:建立会话、生成一张空图、添加各个节点和边,形成一个有连接点的图,然后启动图,进行系统的执行。
Tensorflow基本架构
client:用户会使用,与Master和一些worker process交流
master:用来和客户端交互,同时调度任务
worker process:工作节点,每个worker process可以访问一到多个device
device:Tensorflow的计算核心,通过将device的类型、job名称、在worker process中的索引将device命名。可以通过注册机制来添加新的device实现,每个device实现需要负责内存分配和管理调度Tensorflow系统所下达的核运算需求。
类似于分布式系统,Master是系统的总的调度师,对所有的任务和工作进行调度;client提出需求,对任务做出具体的设定和结果要求;worker process是工作节点,是单任务的监视器;device是任务的具体执行和分配节点,所有的具体计算结果都在device下进行处理。
Tensorflow程序设计
步骤一:导入程序所需要使用的包
步骤二:将W,b定义为变量。将x,y定义为占位符,类似于填子弹的过程。使数据像子弹一样源源不断地填入Tensorflow程序中。
步骤三:前馈方式构造网络
步骤四:构造损失函数
步骤五:构造梯度
步骤六:用一个会话,run来执行