Tensorflow计算图模式意义

原文出处:DengBoCong

无论是机器学习也好,还是深度学习也好,都是围绕着数学建模以及数学运算进行的,在这样的背景之下,诞生了许多的计算框架,我们所熟知的TensorFlow和Pytorch就是其中的主流,这些计算框架以计算服务为根本,自然需要一个计算模型。

如果接触过开发的小伙伴就能体会到,tf这些计算框架的编程方式有着很大的差异。无论是编译类型的语言还是脚本语言,都是一步一步的计算变量, 从而得到结果,比如result = input1 + input2,当执行完语句后,就会得到result的值。

而TensorFlow和Pytorch则不一样,首先需要通过编程构建一个计算图,然后将数据作为输入,通过这个计算图规定的计算操作进行计算,最后得到计算结果。

这种符号式编程有着较多的嵌入和优化,性能也随之提升。同时计算图非常适合用来思考数学表达式,举个例子,比如计算 e = (a + b)*(b + 1) ,在这个式子中存在两个加法和一个乘法的运算,为了更加方便我们讨论,我们引入中间变量来给每个运算的输出表示为一个变量,如下:

c = a + b
d = b + 1
e = c * d

接下来,我们来构建计算图,我们将所以这些操作放入图节点中,并同时计算出结果:
在这里插入图片描述
接着求边的偏导数:

在这里插入图片描述
通过链式法则,我们逐节点的计算偏导数,在网络backward时候,需要用链式求导法则求出网络最后输出的梯度,然后再对网络进行优化。类似上图的表达形式就是TensorFlow以及Pytorch的基本计算模型。总结而言,计算图模型由节点(nodes)和线(edges)组成,节点表示操作符Operator,或者称之为算子,线表示计算间的依赖,实线表示有数据传递依赖,传递的数据即张量,虚线通常可以表示控制依赖,即执行先后顺序。

计算图从本质上来说,是TensorFlow在内存中构建的程序逻辑图,计算图可以被分割成多个块,并且可以并行地运行在多个不同的cpu或gpu上,这被称为并行计算。因此,计算图可以支持大规模的神经网络,如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值