conv啥意思(conc是什么意思)

conv啥意思(conc是什么意思)在这一章里主要学习了以下内容 矩阵的线性变换 特征向量与特征值 秩 如果矩阵的各行具有相关性 一般是低秩的 通常利用秩进行数据降维 如 利用最大秩压缩图像 奇异值分解 和低秩近似 如 图像去噪 将矩阵分解为一个低秩矩阵 一个稀疏矩阵 机器学习的三要素 概率形式与函数形式的关系 训练误差与泛化误差 欠拟合与过拟合 频率学派 关注可独立重复的随机试验中单个事件发生的频率

大家好,我是讯享网,很高兴认识大家。



在这一章里主要学习了以下内容:

  • 矩阵的线性变换,特征向量与特征值;
  • 秩:如果矩阵的各行具有相关性,一般是低秩的;通常利用秩进行数据降维(如:利用最大秩压缩图像、奇异值分解)和低秩近似(如:图像去噪,将矩阵分解为一个低秩矩阵,一个稀疏矩阵);
  • 机器学习的三要素:概率形式与函数形式的关系;
  • 训练误差与泛化误差;
  • 欠拟合与过拟合;
  • 频率学派(关注可独立重复的随机试验中单个事件发生的频率,从观测数据中估计参数值)与贝叶斯学派(关注随机事件的可信程度,可能性=假设+数据)。

1.卷积神经网络的应用

  • 分类、检索、检测、分割
  • 人脸识别、人脸表情识别、图像生成、图像风格转化、自动驾驶
  • Step1:Neural Network(搭建神经网络结构)
  • Step2:Cost Fuction(找到合适的损失函数)
  • Step3:Optimization(找到合适的优化函数,更新参数)
    • 反向传播(BP)
    • 随机梯度下降(SGD)

(2)损失函数--用来衡量吻合度的

  • 常用分类损失:交叉熵损失
  • 常用回归损失:均方误差(MSE)

(3)全连接网络处理图像的问题:参数太多,容易导致过拟合
(4)卷积神经网络的解决方式:局部关联,参数共享
(5)相同之处:都是层级结构

1.卷积(Concolutional Layer)

input 输入 kernel/filter 卷积核/滤波器 weights 权重 receptive field 感受野 activation map/feature map 特征图 depth/channel 深度 output 输出 2.池化(Pooling 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的卷积核),降低参数量

1
讯享网

  • Stem部分:卷积-池化-卷积-卷积-池化
  • Inception:多个Inception拼接
  • 输出:没有额外的全连接层(除了最后的类别输出层)
  • 辅助分类器:解决由于模型深度过深导致的梯度消失的问题

5.ResNet

  • 残差学习网络(deep residual learning network)
  • 可以训练很深的网络
    markdown

代码实现 链接

 

讯享网
讯享网

显示数据集中的部分图像

 

链接

讯享网

定义训练和测试函数

 
讯享网

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。

1

首先,加载并归一化 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里面各个部分的具体含义,修改之后有什么作用?

小讯
上一篇 2025-05-05 10:42
下一篇 2025-05-11 13:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/198824.html