zoukankan      html  css  js  c++  java
  • 第4次作业CNN实战

    第四次作业:猫狗大战挑战赛

    在进行了n次尝试之后,参考了大佬的【傻瓜式博客教学】(感激不尽),终于可以了!

    【问题】:前面很多次都是运行不到一半就进行不下去了,这种情况是为什么呢?

    Byj3qK.png

    【关于文件】

    colab里可以通过Linux的一些命令进行操作:

    ByvWkD.png

    unzip test.zip 会默认将文件解压到当前目录,加-d选项解压到指定目录。

    colab中图片是这么排序的,可以提取标号,与分类结果一同输出,再进行排序

    B6CtmR.png

    【步骤】:

    1.下载数据

    B6Pc2F.png

    2.数据预处理

    datasets 是 torchvision 中的一个包,可以用做加载图像数据,torchvision 支持对输入数据进行一些复杂的预处理/变换 。

    B6ipPf.png

    3.创建VGG Model

    torchvision中集成了很多在 ImageNet (120万张训练数据) 上预训练好的通用的CNN模型。

    B6iFMQ.png

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

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

    B6i6ot.png

    5.训练并测试全连接层

    第1步,创建损失函数和优化器;第2步,训练模型;第3步,测试模型。

    B6iqYV.png

    B6FPFx.png

    【优化尝试】

    使用Adam优化器比SGD效果好

    Byj4s0.png

    Byvnw8.png

    通过尝试,增大epoch,减小学习率进行优化

    B69xOA.png

    B6Cnwq.png

  • 相关阅读:
    权值线段树模版
    P2679 [NOIP2015 提高组] 子串
    P3747 [六省联考 2017] 相逢是问候
    P2822 [NOIP2016 提高组] 组合数问题
    P2331 [SCOI2005]最大子矩阵
    P1854 花店橱窗布置
    P5888 传球游戏
    Hard | LeetCode 42. 接雨水 | 单调栈 | 双指针
    Medium | LeetCode 621. 任务调度器 | 设计
    Medium | LeetCode 166. 分数到小数 | 数学
  • 原文地址:https://www.cnblogs.com/Amb1tion100/p/13925030.html
Copyright © 2011-2022 走看看