Python与深度学习--TensorFlow卷

Python循序渐进学深度学习
第1章、Python基础
1.1函数
1.2异常处理
1.3装饰器
1.4对象简介
第2章、Numpy常用操作
第3章、Pandas基础
3.1 DataFrame简介
3.2 DataFrame数据处理
3.3 可视化
3.4 文件处理
3.5 操作数据库
第4章、Python与爬虫
第5章、数学基础
5.1线性代数
5.2概率与信息论
5.3概率图模型
第6章、Python与机器学习
6.1Sklearn简介
6.2 机器学习常用方法
6.2.1正则化
6.2.2降维处理
6.2.3交叉验证
6.2.4网格搜索
6.2.5流水线
6.3监督学习
6.4无监督学习
6.5常用性能评估指标
6.6客户价值分析实例
第7章 Python与深度学习
7.1前馈神经网络
7.2 theano简介
7.2.1深度学习框架
7.2.2图像识别实例
7.3 keras简介
7.3.1深度学习框架
7.3.2图像识别实例
7.3.3自然语言处理实例
第8章、Python与Spark
8.1PySpark架构
8.2流水线
8.3 交叉验证
8.4 机器学习实例
第9章、Python与图形处理
9.1 如何处理图形
9.2 如何把特征与标签整合
第10章、Python与语言处理
10.1语言处理
10.2 常用模型(tf-idf、word2vec)
10.3 情感分析实例
10.4 聊天机器人
第11章、Python与TensorFlow
11.1TensorFlow简介
11.1.1TensorFlow基础
11.1.2TensorBoard
11.1.3图像与TensorFlow
11.2激励函数
11.3优化方法
11.4自编码
11.5 深度学习问题及解决方法
11.6 卷积神经网络
11.6.1原理
11.6.2手写数字识别实例
11.6.3头像识别实例
11.7 循环神经网络
11.7.1原理
11.7.2情感分析实例
11.7.3人机对话实例
11.8 Tklearn图像识别实例
11.9 Keras图像识别实例
第12章、综合练习
1、人机对话实例:
爬虫获取网络数据集(点评、图像)=>pandas+Spark数据处理=>Pyspark数据可视化=>TensorFlow建立模型=>训练评估模型=>人机对话。
2、人脸识别实例:
数据下载=>加载数据=>数据预处理=>TensorFlow建立模型=>训练评估模型=>人脸识别
附录 A、几种优化方法比较:

contours_evaluation_optimizers
从上图可以看出, Adagrad、Adadelta与RMSprop在损失曲面上能够立即转移到正确的移动方向上达到快速的收敛。而Momentum 与NAG会导致偏离。同时NAG能够在偏离之后快速修正其路线,因为其根据梯度修正来提高响应性

saddle_point_evaluation_optimizers

从上图可以看出,在鞍点(saddle points)处(即某些维度上梯度为零,某些维度上梯度不为零),SGD、Momentum与NAG一直在鞍点梯度为零的方向上振荡,很难打破鞍点位置的对称性;Adagrad、RMSprop与Adadelta能够很快地向梯度不为零的方向上转移。
从上面两幅图可以看出,自适应学习速率方法(Adagrad、Adadelta、RMSprop与Adam)在这些场景下具有更好的收敛速度与收敛性。

如何选择SGD优化器

如果你的数据特征是稀疏的,那么你最好使用自适应学习速率SGD优化方法(Adagrad、Adadelta、RMSprop与Adam),因为你不需要在迭代过程中对学习速率进行人工调整。
RMSprop是Adagrad的一种扩展,与Adadelta类似,但是改进版的Adadelta使用RMS去自动更新学习速率,并且不需要设置初始学习速率。而Adam是在RMSprop基础上使用动量与偏差修正。RMSprop、Adadelta与Adam在类似的情形下的表现差不多。Kingma[15]指出收益于偏差修正,Adam略优于RMSprop,因为其在接近收敛时梯度变得更加稀疏。因此,Adam可能是目前最好的SGD优化方法。
有趣的是,最近很多论文都是使用原始的SGD梯度下降算法,并且使用简单的学习速率退火调整(无动量项)。现有的已经表明:SGD能够收敛于最小值点,但是相对于其他的SGD,它可能花费的时间更长,并且依赖于鲁棒的初始值以及学习速率退火调整策略,并且容易陷入局部极小值点,甚至鞍点。因此,如果你在意收敛速度或者训练一个深度或者复杂的网络,你应该选择一个自适应学习速率的SGD优化方法。
附录B:卷积共享变量示意图
在卷积神经网络中,参数共享是如何体现的呢?卷积核如何移动?,我们从以下图可以看出,比如说 8×8 作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个 8×8 样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。特别是,我们可以用从 8×8 样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。
如下图所示,展示了一个33的卷积核在55的图像上做卷积的过程。每个卷积都是一种特征提取方式,就像一个筛子,将图像中符合条件(激活值越大越符合条件)的部分筛选出来

saddle_point_evaluation_optimizers