【第2周】卷积神经网络

第一部分:代码练习

1 MNIST 数据集分类

1.1 准备工作

导入相关库

在这里插入图片描述

定义函数:计算模型中有多少参数

在这里插入图片描述

1.2 加载MNIST数据集

在这里插入图片描述

可视化数据

在这里插入图片描述

1.3 创建网络

全连接网络

在这里插入图片描述

CNN

在这里插入图片描述

定义训练函数和测试函数

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

1.4 在小型全连接网络上训练

在这里插入图片描述

1.5 在CNN上训练

在这里插入图片描述

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

随机打乱像素顺序

在这里插入图片描述

重新定义训练函数和测试函数,加入打乱顺序操作

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

在全连接网络上训练和测试

在这里插入图片描述

在CNN上训练和测试

在这里插入图片描述

2 CIFAR10 数据集分类(CNN)

2.1 准备工作

导入相关库

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

可视化数据

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

2.2 定义网络

在这里插入图片描述

2.3 训练和测试网络

训练网络

在这里插入图片描述

小数据集测试

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

测试结果
在这里插入图片描述

完整数据集测试

在这里插入图片描述

3 CIFAR10 数据集分类(VGG16)

3.1 定义 dataloader

在这里插入图片描述

3.2 定义网络

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

3.3 网络训练

在这里插入图片描述

3.4 网络测试

在这里插入图片描述

第二部分:问题总结

1 dataloader 里面 shuffle 取不同值有什么区别?

在dataloader中,shuffle参数用于控制数据在每个epoch(一个完整的数据集迭代)开始时是否随机打乱。shuffle=True时,在每个epoch开始时将数据随机打乱,这有助于防止模型对数据的顺序依赖性。shuffle=False时,数据将按照原始顺序加载,适用于某些需要按顺序处理数据的情况。

2 transform 里,取了不同值,这个有什么区别?

在transform中,不同的取值可以代表不同的数据预处理操作。例如,对图像数据进行resize、crop、翻转、颜色调整等预处理操作,每个操作取不同的值代表不同的处理方式。不同的transform操作可以帮助模型更好地学习数据的特征,提高模型的泛化能力。

3 epoch 和 batch 的区别?

Epoch是指训练过程中使用完整数据集的次数。Batch是指一次训练中使用的样本数量。在一个epoch中,模型将通过使用一批一批的数据进行多次参数更新。例如,如果数据集有1000个样本,每个batch包含10个样本,那么一个epoch将进行100次参数更新。

4 1x1的卷积和 FC 有什么区别?主要起什么作用?

1x1的卷积和全连接层(FC)都是用于特征映射的线性变换。1x1的卷积操作相当于对每个像素点进行线性组合,通常用于调整特征通道的数量,增加或减少特征维度。全连接层是在神经网络中的一种常见层,将所有输入与权重连接,输出最终的预测结果。

5 residual leanring 为什么能够提升准确率?

Residual Learning(残差学习)通过引入跳跃连接(shortcut connection)来解决深层神经网络中的梯度消失和梯度爆炸问题。通过在网络中添加跳跃连接,使得模型可以直接学习残差,从而更容易优化,避免了一些训练问题,提高了网络的准确率和训练效率。

6 代码练习二里,网络和1989年 Lecun 提出的 LeNet 有什么区别?

相较于1989年 Lecun 提出的 LeNet,现代的卷积神经网络(CNN)更深更复杂。CNN在网络架构、激活函数、优化器等方面有很大改进。例如,现代CNN中使用的激活函数如ReLU、优化器如Adam等都有助于加速训练和提高准确率。此外,现代CNN结合了Residual Learning等技术来解决梯度消失问题,允许更深层次的网络设计。

7 代码练习二里,卷积以后feature map 尺寸会变小,如何应用 Residual Learning?

在卷积后应用Residual Learning时,可以通过在跳跃连接中使用1x1卷积来调整卷积后feature map的尺寸,使其与卷积前的尺寸相匹配。这样可以确保在跳跃连接中进行特征的加和操作时尺寸相同,从而实现残差学习。

8 有什么方法可以进一步提升准确率?

  • 使用更深层次的网络结构,如ResNet、Inception等,来增加网络的表示能力。
  • 数据增强技术,通过随机裁剪、旋转、翻转等操作增加训练数据,有助于提高模型的泛化能力。
  • 使用预训练模型和迁移学习,利用在大规模数据集上预训练的模型权重来初始化模型,然后在特定任务上微调模型参数,可以加快训练速度并提高准确率。
  • 调整超参数,如学习率、正则化项等,对模型进行更好地优化。
  • 使用集成学习方法,如bagging、boosting等,结合多个模型的预测结果来提高整体准确率。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值