软件工程第四次实验--CNN实战

Assginment4:Practice of CNN

本博客为OUC2022秋季软件工程第四次作业


1.代码练习

Colab 迁移学习

1. 下载数据

引入需要的包,判断是否存在GPU。如果返回False,则表示没有GPU,可以在编辑-笔记本设置-GPU里选择。图中返回True,表示存在GPU加速,可以进行下一步。

! wget http://fenggao-image.stor.sinaapp.com/dogscats.zip
! unzip dogscats.zip

下载和解压缩数据集。

2.预处理

查看图片属性。0代表cat,1代表dog。

2

显示图片查看数据是否正常。

3

3.创建 VGG Model

tensor输出每一种目标识别的结果。

其中softmax与hardmax相对。hardmax最大的特点就是只选出其中一个最大的值,即非黑即白。但是往往在实际中这种方式是不合情理的,比如对于文本分类来说,一篇文章或多或少包含着各种主题信息,我们更期望得到文章对于每个可能的文本类别的概率值(置信度),可以简单理解成属于对应类别的可信度。所以此时用到了soft的概念,softmax的含义就在于不再唯一的确定某一个最大值,而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。

4

4. 修改最后一层,冻结前面层的参数

显示VGG结构

5

5. 训练并测试全连接层

采取6个分类器并行训练。

分类器的构造和实施大体会经过以下几个步骤:

  • 选定样本(包含正样本和负样本),将所有样本分成训练样本和测试样本两部分。
  • 在训练样本上执行分类器算法,生成分类模型。
  • 在测试样本上执行分类模型,生成预测结果。
  • 根据预测结果,计算必要的评估指标,评估分类模型的性能。

6
训练模型
7
测试模型
8
测试结果
9
单次可视化的数据测试
10

想法和解读
深度学习流程

如何在工程问题中使用深度学习:首先准备待解决问题的数据,然后下载预训练好的网络,接着用准备好的数据来 fine-tune 预训练好的网络。

数值归一化

图片数值在[0,255]区间,为了训练时收敛速度快,避免激活函数饱和,需要将图片数值转换至[0,1]区间。这里采用了tensorflow内置的tensorflow.image.convert_image_dtype操作,不仅执行了归一化,还可以转换数据类型为需要的tensorflow.float32数据类型。

冻结前面层参数

目标是使用预训练好的模型,因此,需要把最后的Linear 层由1000类,替换为2类。为了在训练中冻结前面层的参数,需要设置 required_grad=False。这样,反向传播训练梯度时,前面层的权重就不会自动更新了。训练中,只会更新最后一层的参数。

二、猫狗大战实战

成果先行:

image-20221021112714722

实战过程

下载解压工具rar

!sudo apt-get install rar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值