【深度学习Week2】卷积神经网络

news2024/11/25 3:49:20

卷积神经网络 Convolutional Neural Networks,CNN

  • 【第一部分:代码练习】
    • 1.MNIST 数据集分类
    • 2.CIFAR10 数据集分类
    • 3.使用 VGG16 对 CIFAR10 分类
  • 【第二部分:问题总结】

【第一部分:代码练习】

1.MNIST 数据集分类

1.1 加载数据 (MNIST):
在这里插入图片描述
1.2 定义网络时,需要继承nn.Module,并实现它的forward方法,把网络中具有可学习参数的层放在构造函数init中。

只要在nn.Module的子类中定义了forward函数,backward函数就会自动被实现(利用autograd)。
在这里插入图片描述
在这里插入图片描述
1.3 定义训练和测试函数:
在这里插入图片描述
在这里插入图片描述
1.4 在小型全连接网络上训练(Fully-connected network):
在这里插入图片描述
1.5 在卷积神经网络上训练:
在这里插入图片描述
通过上面的测试结果,可以发现,含有相同参数CNN 效果要明显优于 简单的全连接网络,是因为 CNN 能够更好的挖掘图像中的信息,主要通过两个手段:

卷积:Locality and stationarity in images
池化:Builds in some translation invariance

1.6 打乱像素顺序再次在两个网络上训练与测试:

考虑到CNN在卷积与池化上的优良特性,如果我们把图像中的像素打乱顺序,这样 卷积池化 就难以发挥作用了,为了验证这个想法,我们把图像中的像素打乱顺序再试试。

首先下面代码展示随机打乱像素顺序后,图像的形态:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从打乱像素顺序的实验结果来看,全连接网络的性能基本上没有发生变化,但是 卷积神经网络的性能明显下降。

这是因为对于卷积神经网络,会利用像素的局部关系,但是打乱顺序以后,这些像素间的关系将无法得到利用。

2.CIFAR10 数据集分类

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.使用 VGG16 对 CIFAR10 分类

3.1 定义 dataloader
这里的 transform,dataloader 和之前定义的有所不同
在这里插入图片描述
3.2 VGG 网络定义
在这里插入图片描述
在这里插入图片描述
3.3 网络训练
在这里插入图片描述
3.4 测试验证准确率:
在这里插入图片描述
可以看到,使用一个简化版的 VGG 网络,就能够显著地将准确率由 64%,提升到 84.92%

【第二部分:问题总结】

1. dataloader 里面 shuffle 取不同值有什么区别?
当 shuffle 取 true 时,在每个 epoch 开始时,对数据进行重新排序,打乱顺序以增加多样性,可以提高训练模型的泛化能力;
当 shuffle 取 false 时,在每个 epoch 开始时不会对数据的顺序进行打乱。

2. transform 里,取了不同值,这个有什么区别?
torchvision.transforms是pytorch中的图像预处理包,包含了很多种对图像数据进行变换的函数:

data_transforms = transforms.Compose([		# Compose方法是将多种变换组合在一起
        transforms.RandomResizedCrop(224),	# 进行随机大小和随机宽高比的裁剪,之后resize到指定大小224
        transforms.RandomHorizontalFlip(),	# 以0.5的概率水平翻转给定的PIL图像
        transforms.ToTensor(),				# 将PILImage转变为torch.FloatTensor的数据形式
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])# 通过平均值和标准差来标准化一个tensor图像
    ])

pytorch中transform函数详解

3. epoch 和 batch 的区别?
Epoch(批次)是指将整个数据集迭代一遍的过程。 在一个 Epoch 中,模型会对整个数据集进行一次前向传播和反向传播,更新所有的参数。
Batch(批量)是指为了加速训练而将大规模数据划分成小批次数据的过程。
epoch 由一个或多个 batch 组成。

4. 1x1的卷积和 FC 有什么区别?主要起什么作用?
从计算上来说,1x1的卷积和 FC 都是一个卷积计算的过程(y=WX+b),在理论上是可以相互替代的。
区别在于输入尺寸是否可变,卷积层可以对输入进行升维或者降维,以及卷积层可以引入非线性特征。全连接没办法适应输入尺寸的变化只能固定。
FC 常位于网络模型尾部,用于输出分类结果,而1×1卷积用于改变输入数据的channel

5. residual leanring 为什么能够提升准确率?
增加了深度却没有出现梯度消失,这是因为残差block在最后的输出中还加上其输入本身,这样的话它在复合求导的时候,即使某一个部分导数是0,但由于加了输入本身x,所以求导之后还是会加上一个1,这样计算出的权重就不会不发生改变了,也就避免出现梯度消失进而提升准确率。

6. 代码练习二里,网络和1989年 Lecun 提出的 LeNet 有什么区别?
练习二使用最大值池化 ,LeNet中使用平均值池化。
练习二使用ReLu激活函数,LeNet使用sigmoid激活函数。
在LeNet中最后多使用了一个卷积层,将输入图像大小变为1×1,channel为120,而在代码练习2中没有使用该卷积层,而是使用了一个全连接层,输出大小为120。

7. 代码练习二里,卷积以后feature map 尺寸会变小,如何应用 Residual Learning?
用1×1的卷积改变通道数,进行升维

8. 有什么方法可以进一步提升准确率?
增大训练数据集;
调整模型结构;
使用Dropout防止过拟合;
增加residual learning网络的深度;
选用更合适的损失函数和激活函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32入门学习之USART串口通信:

1.串口通信简介:通用异步收发传输器UART(Universal Asynchronous Receiver/Transmitter)是负责处理数据总线和串口之间的串/并通信的设备。UART通信规定了数据帧的格式:起始位、数据位、校验位、停止位等。UART异步通信只需要通信双方设置好数据帧的格式…

html2Canvas+JsPDF 导出pdf 无法显示网络图片

html2CanvasJsPDF 导出pdf 问题:类似于下面着这种网络图片使用img导出的时候是空白的 https://gimg3.baidu.com/search/srchttp%3A%2F%2Fpics4.baidu.com%2Ffeed%2F7e3e6709c93d70cf827fb2fda054500cb8a12bc9.jpeg%40f_auto%3Ftoken%3Dd97d3f0fd06e680e592584f8c7a2…

Devart UniDAC Crack

Devart UniDAC Crack 通用数据访问组件(UniDAC)是一个强大的非可视化跨数据库数据访问组件库,适用于Delphi、Delphi for.NET、CBuilder和Lazarus(Free Pascal)。我们将长期成功开发的经验结合到一个产品中,提供对流行数据库服务器的统一访问,…

Sublime Text 4 激活教程(Windows+Mac)

下载安装 官网 https://www.sublimetext.com 点击跳转 2023.7.21 版本为4143 Windows激活方式 一、激活License方式 入口在菜单栏中"Help” -> “Enter License” 注意格式,可能会过期失效,失效就用方式二 Mifeng User Single User License E…

SUSE宣布推出免费RHEL分叉以保留企业级Linux的选择权

导读在Red Hat宣布将限制AlmaLinuxOS或Rocky Linux等社区发行版对其公共仓库的访问后,最近Red Hat与IBM之间发生了一些争论,有鉴于此,SUSE今天宣布计划为RHEL和CentOS用户提供一个免费的替代方案。 SUSE已经开发了SUSE Linux Enterprise (SLE…

【数据挖掘】PCA/LDA/ICA:A成分分析算法比较

一、说明 在深入研究和比较算法之前,让我们独立回顾一下它们。请注意,本文的目的不是深入解释每种算法,而是比较它们的目标和结果。 如果您想了解更多关于PCA和ZCA之间的区别,请查看我之前基于numpy的帖子: PCA 美白与…

Fatdog64 Linux 814发布

导读Fatdog64 Linux是一个小型、桌面、64位的Linux发行版。 最初是作为Puppy Linux的衍生品,并增加了一些应用程序。该项目最新的版本,Fatdog64 814,是8xx系列的最后一个版本,未来的版本将转向9xx基础。 尽管它是该系列的最后一个…

红黑树概念

这里写目录标题 红黑树概念红黑树的性质红黑树节点的定义红黑树的插入 红黑树概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&…

Docker Compose 解析:定义和管理多容器应用,从多角度探索其优势和应用场景

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

【代码随想录 | Leetcode | 第十天】哈希表 | 三数之和 | 四数之和

前言 欢迎来到小K的Leetcode|代码随想录|专题化专栏,今天将为大家带来哈希法~三数之和 | 四数之和的分享✨ 目录 前言15. 三数之和18. 四数之和总结 15. 三数之和 ✨题目链接点这里 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], num…

flask 页面新增文件,存在重复文件时,返回错误消息

(40条消息) flask 读取文件夹文件,展示在页面,可以通过勾选删除_U盘失踪了的博客-CSDN博客 项目结构 这是一个基本的Flask应用程序,主要有两个路由,一个是index,用于显示所有存在的文件以及用于删除已选的文件&#…

C# SolidWorks 二次开发 -从零开始创建一个插件(2)

上一篇我详细讲解了如何创建一个插件,但是无界面无按钮,这种插件适合配合事件偷偷的在后台做点什么事情。今天这篇讲一下如何增加一些按钮到工具栏、菜单上去。 先告诉大家这个东西注册表在哪,因为solidworks在这方面做的不太好,…

七大排序算法和计数排序

文章目录 一、直接插入排序二、希尔排序三、直接选择排序四、堆排序五、冒泡排序六、快速排序6.1递归实现快速排序6.2非递归实现快速排序 七、归并排序7.1递归实现归并排序7.2非递归实现归并排序 八、计数排序 以下排序以从小到大排序为例 一、直接插入排序 时间复杂度&#x…

如何从gitee上下载项目并把它在本地运行起来

有时候我们会想到在gitee上下载下来项目,那么怎么把项目下载到本地并跑起来呢? 第一步:在git上找到你想要克隆下来的项目,按照如下操作复制项目地址连接,如下图: 以上可以选择HTTPS和SSH两种形式。 第二步…

在SPringBoot中整合Mybatis-plus以及mybatis-puls的基本使用

创建SPringBoot项目 1.选择创建项目 2.创建SPringBoot项目 3.选择SPringBoot的版本和依赖 4.导入mysql,druid,mybatis-plus和lombok的依赖,导入后记得更新依赖 <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId…

Mybatis单元测试,不使用spring

平时开发过程中需要对mybatis的Mapper类做单元测试&#xff0c;主要是验证语法是否正确&#xff0c;尤其是一些复杂的动态sql&#xff0c;一般项目都集成了spring或springboot&#xff0c;当项比较大时&#xff0c;每次单元测试启动相当慢&#xff0c;可能需要好几分钟&#xf…

Mac 四大常用清理软件推荐,软件特色下载教程横向评测

Mac 一般来说基本是不会中毒的&#xff0c;而且像 现在的 windows 也是很少中毒&#xff0c;但我们可能还是需要一款杀毒清理软件&#xff0c;主要是为了清理垃圾&#xff0c;统一查看并管理软件开机自启、权限信息等&#xff0c;统一卸载清理等功能&#xff0c;另外我们可能还…

【机器学习】PyTorch手动实现Logistic回归算法

参考地址&#xff1a;点击打开 计算较为繁琐&#xff0c;需要用到sigmoid函数和梯度下降算法&#xff0c;步骤主要如下&#xff1a; 二项分布概率公式表示最大似然估计和对数化计算求道带入梯度下降算法计算和优化 代码&#xff1a; import numpy as np import matplotlib.py…

05.计算机网络——TCP协议

文章目录 TCP协议段格式TCP交付过程TCP解包过程确认应答机制\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDvQFCTM-1689855767485)(C:\Users\11794\AppData\Roaming\Typora\typora-user-images\image-20230719204622485.png)\] 32位序号/32位确认…

深度学习anaconda+pycharm+虚拟环境迁移

一、下载好anaconda和pycharm安装包。 下载anaconda:Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror pycharm汉化包 二、安装anaconda 深度学习环境配置-Anaconda以及pytorch1.2.0的环境配置&#xff08;Bubbliiiing 深度学习 教程&…