前言
这里主要介绍下TensorFlow的核心概念,介绍概念之前,先来介绍下深度学习计算框架的历史。Tensorflow计算框架为什么这么受欢迎?。它的核心概念就是计算图结构,我们写代码就是画图的过程。
01
计算框架介绍
如果对深度学习有了解的话,下面这些框架应该都不陌生。什么是深度学习计算框架呢?大部分都是由企业提出来的,企业在实现业务的时候会写一些深度学习算法,最后发布出去。只要把模型结构搭建起来,你对它怎么更新,怎么传播都不用考虑。
总之,有了深度学习框架,在做任务的时候会大大减少开发效率。
theano
第一个深度学习框架,2008年诞生于加拿大蒙特利尔理工学院的bengio团队。被认为是深度学习研究和发展的行业标准。theano毕竟实验团队和企业比起来还是存在弱势,现在基本上不更新了,但历史地位毋容置疑。
keras
以TensorFlow、theano、CNTK为后端的高级框架,是初学者快速入门的首选。已被TensorFlow收编。
Pytorch
是众多深度学习框架中较灵活的,有Facebook公司做技术支持。它的灵活性满足了科研人员对模型深入理解和多角度探索的需求。
TensorFlow
是当前最流行的深度学习框架,由Google公司做技术支持。官方文档完整,社区活跃,更新快速。以上优势让TensorFlow成为工业界首选框架。
02
计算图结构
TensorFlow概念
TensorFlow是一个采用数据流图,用于数值计算的开源软件库。
图中节点在图中表示数学操作,线则表示在节点间相互联系的多维数据数组,即张量。
数据流图
前面说传输的是张量,那为什么是一个数呢?一维数组是向量,二维数组是矩阵,零维数组就是常量。
这里举个栗子:
部分执行
我们前面是定义了计算图,具体还没执行,执行的时候不一定要完整执行,可以部分执行,至于为什么可以这样部分执行,先不在这里做讨论。我们选某个运算节点时候只会选和它相关的前面的节点,不相关的就不用执行。
相关性指用于计算一个节点需要的节点