Deep Learning笔记-1

记录一下学习DL的过程

警示:python是缩进严格的语言!

0.配置环境

以前学爬虫的时候就装了anaconda和pycharm,因此这次直接安装pytorch

比起之前配置ROS的环境简直是小菜一碟,唯一需要注意的可能是官网直接找到的cuda版本不一定匹配,需要再去寻找一下链接。下载pytorch的时候网络不好,最后换了清华源解决问题。

1.pytorch 60分钟入门

这个教程的版本有点老了,现在新的pytorch里已经没有variable这个类了,所以对应的有些东西都发生了变化,可惜的是我没太看明白 : /

跟着似懂非懂的敲了一遍代码,一方面因为对python本身就不太熟悉,另一方面对ml,numpy都没有接触过,所以学的比较茫然,或者说看完代码并没有太搞清楚自己在干什么。

做了CIFAR10的示例,和上面说的一样似懂非懂。找不到非常详细的注释,我想过一段时间应该再回来返工一次。

2.MNIST数据集实现

知乎上找到了一个注释很详细的代码,边敲边看,最后发现跑不了。上GitHub扒下了最新的代码,得到了结果,但是并没有觉得自己完全理解了,只算是看懂了一部分,学习了一些知识点吧。还要再更细致的学习一下

卷积 (convolution)

卷积层可以理解为一个滤波器,对输入图像处理之后提取出局部的特征,典型案例如用Sobel算子进行边缘检测。从频域的角度考虑,卷积核也是起到对频域信息进行选择的作用。

填充 (padding)

填充有多种类型,目前我看到的案例中作用是保持卷积层的输出和输入大小相同

池化(pooling)

池化是一种形式的降采样,是对信息减少特征,进行抽象的过程。也称为下采样,降采样

作用: 特征不变性降维以防止过拟合, 增大感受野。

常见池化类型: 平均池化最大池化

全连接层 (fully connected layer)

全连接层的主要作用是实现分类(classification)

全连接层就是全连接的卷积层

激活函数 (activation function)

激活函数,负责将神经元的输入端映射到输出端。用来加入非线性因素,以表达出神经元的特征

常见激活函数:

Sigmoid函数: $f(z)=\frac {1} {1+e^z}$

特点:把输入的连续实值变换为0和1之间的输出
缺点:反向传递时容易导致梯度消失;函数输出不以0为中心;指数运算复杂度高

Tanh函数: $tanh(x)=\frac {e^x-e^{-x}}{e^x+e^{-x}}$

解决了sigmod的非zero-centered输出问题,但是其余缺点仍未改善$

ReLU函数 (Rectified Linear Unit) : $Relu=max(0,x)$

优点:解决了gradient vanishing问题,计算速度非常快,收敛速度快。 目前最常用
缺点:输出非zero-centered,存在Dead ReLU Problem : ReLU在负数区域被kill,因为x<0时梯度为0.在参数初始化不合适或学习率很大时会出现这种问题。

Leaky ReLU, PReLU, ELU, **MaxOut **等

SoftMax

最常用的多分类损失函数,回头理解了来更新笔记


Deep Learning笔记-1
http://example.com/2020/09/18/Deep-Learning笔记-1/
Author
Adrian
Posted on
September 18, 2020
Licensed under