在这一章里主要学习了以下内容:
- 矩阵的线性变换,特征向量与特征值;
- 秩:如果矩阵的各行具有相关性,一般是低秩的;通常利用秩进行数据降维(如:利用最大秩压缩图像、奇异值分解)和低秩近似(如:图像去噪,将矩阵分解为一个低秩矩阵,一个稀疏矩阵);
- 机器学习的三要素:概率形式与函数形式的关系;
- 训练误差与泛化误差;
- 欠拟合与过拟合;
- 频率学派(关注可独立重复的随机试验中单个事件发生的频率,从观测数据中估计参数值)与贝叶斯学派(关注随机事件的可信程度,可能性=假设+数据)。
1.卷积神经网络的应用
- 分类、检索、检测、分割
- 人脸识别、人脸表情识别、图像生成、图像风格转化、自动驾驶
- Step1:Neural Network(搭建神经网络结构)
- Step2:Cost Fuction(找到合适的损失函数)
- Step3:Optimization(找到合适的优化函数,更新参数)
- 反向传播(BP)
- 随机梯度下降(SGD)
(2)损失函数--用来衡量吻合度的
- 常用分类损失:交叉熵损失
- 常用回归损失:均方误差(MSE)
(3)全连接网络处理图像的问题:参数太多,容易导致过拟合
(4)卷积神经网络的解决方式:局部关联,参数共享
(5)相同之处:都是层级结构
1.卷积(Concolutional Layer)
- Pooling:保留了主要特征,减少参数和计算量,防止过拟合,提高模型泛化能力
- Pooling类型:最大池化(Max pooling)、平均池化(Average pooling)
3.全连接(FC layer)
- 两层之间所有神经元都有权重链接
- 通常在卷积神经网络尾部
- 全连接层参数两通常最大
1.AlexNet
- 大数据训练
- 非线性激活函数
- 解决了梯度消失问题(正区间)
- 计算速度特别快,只需判断输入是否大于零
- 收敛速度远快于sigmoid
- 防止过拟合:Dropout,Data augmentation
- Dropout:随机失活,训练时随机关闭部分神经元,测试时整合所有神经元
- Data augmentation:平移、翻转、对称;改变RGB通道强度(加入高斯噪声)
2.ZFNet
- 网络结构与AlexNet相同
- 将卷积层1中的感受野和步长减小
- 卷积层3,4,5中的滤波器个数变大
3.VGG
将AlexNet的8layers提升至16~19层,深度更深
4.GoogleNet
- 网络总体结构:
- 网络包含22个带参数的层
- 参数量大约为AlexNet的1/12(由于没有FC层)
- Naive Inception
- 多个卷积核并行,增加特征多样性
- 经过不同的卷积层,channel的个数增大,计算量增大
- Inception V2
- 插入1×1卷积核进行降维(绝大多数1×1卷积核只起到降维的作用)
- Inception V3
- 用小的卷积核代替较大的卷积核(用两个3×3的卷积核来代替一个5×5的卷积核),降低参数量
- Stem部分:卷积-池化-卷积-卷积-池化
- Inception:多个Inception拼接
- 输出:没有额外的全连接层(除了最后的类别输出层)
- 辅助分类器:解决由于模型深度过深导致的梯度消失的问题
5.ResNet
- 残差学习网络(deep residual learning network)
- 可以训练很深的网络

代码实现 链接
讯享网
讯享网
显示数据集中的部分图像


讯享网
定义训练和测试函数
讯享网
Test set: Average loss: 0.4685, Accuracy: 8607/10000 (86%)
Test set: Average loss: 0.2028, Accuracy: 9417/10000 (94%)
讯享网

在全连接网络上训练
讯享网
Test set: Average loss: 0.6033, Accuracy: 8059/10000 (81%)
小结:
- 用FC网络和CNN网络对MNIST数据进行分类,CNN网络的准确率比FC网络高约8%
- 从打乱像素顺序的实验结果来看,全连接网络的性能基本上没有发生变化,但是卷积神经网络的性能明显下降。这是因为对于卷积神经网络,会利用像素的局部关系,但是打乱顺序以后,这些像素间的关系将无法得到利用。
对于视觉数据,PyTorch 创建了一个叫做 totchvision 的包,该包含有支持加载类似Imagenet,CIFAR10,MNIST 等公共数据集的数据加载模块 torchvision.datasets 和支持加载图像数据数据转换模块 torch.utils.data.DataLoader。
下面将使用CIFAR10数据集,它包含十个类别:‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’。CIFAR-10 中的图像尺寸为3x32x32,也就是RGB的3层颜色通道,每层通道内的尺寸为32x32。

首先,加载并归一化 CIFAR10 使用 torchvision 。torchvision 数据集的输出是范围在[0,1]之间的 PILImage,我们将他们转换成归一化范围为[-1,1]之间的张量 Tensors。

讯享网
下面展示CIFAR10里面的一些图片:

接下来定义网络,损失函数和优化器:
讯享网
训练网络:
从测试集中取出8张图片:
讯享网

把图片输入模型:
cat
car
ship
plane
deer
frog
car
deer
讯享网
Accuracy of the network on the 10000 test images: 60 %
小结:
- CIFAR10经过此网络训练后,准确率为:60%
- 通过改变网络结构来提高准确率
VGG16的网络结构如下图所示:

16层网络的结节信息如下:
01:Convolution using 64 filters
02: Convolution using 64 filters + Max pooling
03: Convolution using 128 filters
04: Convolution using 128 filters + Max pooling
05: Convolution using 256 filters
06: Convolution using 256 filters
07: Convolution using 256 filters + Max pooling
08: Convolution using 512 filters
09: Convolution using 512 filters
10: Convolution using 512 filters + Max pooling
11: Convolution using 512 filters
12: Convolution using 512 filters
13: Convolution using 512 filters + Max pooling
14: Fully connected with 4096 nodes
15: Fully connected with 4096 nodes
16: Softmax
这里的 transform,dataloader 和之前定义的有所不同
现在的结构基本上是:
64 conv, maxpooling,
128 conv, maxpooling,
256 conv, 256 conv, maxpooling,
512 conv, 512 conv, maxpooling,
512 conv, 512 conv, maxpooling,
softmax
讯享网
初始化网络,根据实际需要,修改分类层。因为 tiny-imagenet 是对200类图像分类,这里把输出修改为200。
讯享网
Accuracy of the network on the 10000 test images: 84%
- 使用一个简化版的 VGG 网络,就能够显著地将准确率由 64%,提升到 84.92%
- 对某些代码的细节还是不太理解,比如transform,dataloader里面各个部分的具体含义,修改之后有什么作用?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/198824.html