个人笔记,如有错误,欢迎指正。
(一)深度学习框架概述
tensorflow是目前程序员中使用比例最高的深度学习框架,深度学习框架简单来说就是库,在编程时需要import tensorflow 进行使用,深度学习框架像一套积木,其各个组件可以是某一个模型,也可以是某一个算法,利用这个框架,我们可以自己去设计模型去训练数据,也可以使用已有的模型和参数训练数据。
(二)深度学习框架核心组件
框架有五大组件:张量、基于张量的各种操作、计算图、自动微分工具、BLAS/CUBLAS/CUDNN等拓展包
张量:代数中定义的张量是基于矩阵和向量的推广,注意其维度,一张RGB彩色图片表示成一个3阶张量;将数据抽象成张量表示,处理速度快;Python numpy包中numpy.imread和numpy.imsave两个方法,分别是图片到张量,张量到图片。
数学运算和处理过程:数据学习的过程中,涉及到矩阵乘法、卷积、池化等数学操作,注意大部分张量操作都是基于抽象类的,而非应用函数,即不面向过程编程。
计算图:上面的各种过程整合在一起,会涉及到多个操作是并行还是顺次执行,如何协同各种不同的底层设备,如何避免各种类型的冗余操作等。这里的计算图就是为了解决这个问题,在后来成熟的框架中,图形结构在开发框架中在Python建模和c++执行(底层)之间耦合,将计算图作为前后端之间的中间表示,可带来良好的交互性。
自动微分:相对于自动微分,对一些非线性过程(如ReLU),使用符号微分成本高昂。
运算效率:为了提高运算效率,可以使用高级语言和C语言交互的方式,也可以使用可以方便转为底层语言的高级语言,如Cython;为了提高运算效率,可以利用一些拓展包进行加速,BLAS对CPU加速,CUDNN对GPU加速。