清华青年AI自强作业hw5:基于CNN实现CIFAR10分类任务

news2024/12/25 13:06:40

清华青年AI自强作业hw5:基于CNN实现CIFAR10分类任务

    • 简述
    • 作业实现
    • 遇到的问题
    • 相关链接

在这里插入图片描述

一起学AI系列博客:目录索引

简述


hw5作业为利用深度卷积神经网络实现CIFAR_10数据集十分类问题,帮助理解CNN的前向传播结构。

CIFAR-10是一个常用的彩色图片数据集,它有10个类别: ‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’。

其中,训练集样本5W张图,测试集样本1W张图。

在这里插入图片描述

官网介绍:The CIFAR-10 dataset,link

  • 相应实现源码见代码仓:https://github.com/ioMayday/Tsinghua_Youth_AI/tree/master/homework
  • 相关keras使用指导:https://keras.io/zh/getting-started/sequential-model-guide/

作业实现


首先,根据课程作业上搭建的模型网络,得到总体算法流程。

在这里插入图片描述

简单的CNN网络模型及具体参数

算法流程

  • 输入图像
  • 进行数据增强
  • 两层卷积网络
    • 卷积计算
    • 加入偏置
    • 激活函数
    • 池化计算
  • 将结果输出展开成1维向量
  • 通过两层FC网络
  • 通过softmax得到10分类结果

注意,卷积+池化+偏置+relu,这里我们整体算1层卷积网络。

基本超参设置

  • batch-size: 256
  • epoch:100
  • lr:0.1
  • learning_decay:0.001
  • loss:交叉熵
  • 优化方法:adam
  • 模型层数:4
  • batchnorm: yes
  • 激活函数:relu
  • 末端输出:softmax

实现步骤

  • 本地调试
    • 先本地CPU跑通demo
  • 服务器正式训练
    • 在服务器跑GPU
    • 先调小的epoch、batchsize、样本输入,保证gpu环境通的
    • 再调正式的参数进行训练

遇到的问题


数据集100次epoch后loss就无法下降,预测集精度仅55%

  • 老师结果:70.18%
  • 学生结果:87.35%

现象分析

  • 是否训练次数不够高,欠拟合
    • epoch调大后,依然无济于事
  • 查看样本大小,原始的:5w训练,最新的:10w训练,是否训练集问题?
    • 确认不是,最新的数据集本质也是5w张图片,只是数据增强后,增加了5w张图
  • keras编译项loss还是二分类loss,应该改为categorical_crossentropy。
    • 确认有影响,导致模型loss无法正常收敛
  • 是否学习率过大导致loss无法进一步收敛?
    • 确认有影响,学习率衰减设置过大0.8,导致lr很快为0,改为0.001,再后期可以精细化调节loss

结论

  • 编译项loss类型选择错误
  • 学习率设置过大

在分析过程中,同期实现了基于keras官网介绍的模型训练demo,改进后测试精度达到:76%。主要做了以下修改:

  • 网络卷积层数和feature个数不同
  • 去除图片增强模块
  • 基于colab环境运行,适配其keras版本

最终,基于课程上的网络模型训练,经过100个epoch得到的结果是:

  • 训练集:99.97%
  • 测试集:68%

说明有些过拟合,后期还需要增大正则化、减小epoch提前终止训练等方式来进行优化。

相关链接


  1. 文科生都能零基础学AI?清华这门免费课程让我信了,link
  2. 清华青年AI自强作业hw2:线性回归预测,link
  3. 清华青年AI自强作业hw3_1:用线性回归模型拟合MNIST手写数字分类,link
  4. 清华青年AI自强作业hw3_2:前向传播和反向传播实战,link
  5. 清华青年AI自强作业hw3_3:用NN网络拟合MNIST手写数字分类,link
  6. 清华青年AI自强作业hw4:基于DNN实现狗狗二分类与梯度消失实验,link

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

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

相关文章

现代处理器结构

本文翻译自:Modern Microprocessors A 90-Minute Guide!,,我认为原文是相当好的计算机体系结构方面的概述,与时代相结合是国内计算机课本普遍缺失的一环,本文可作为一个有效的补充,向原作者和其他译者表示感…

青岛大学_王卓老师【数据结构与算法】Week03_09_线性表的链式表示和实现9_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–…

软件测试面试-银行篇

今天参加了一场比较正式的面试,汇丰银行的视频面试。在这里把面试的流程记录一下,结果还不确定,但是面试也是自我学习和成长的过程,所以记录下来大家也可以互相探讨一下。 请你做一下自我介绍?(汇丰要求英…

如何在VUE项目中使用svg图标

一文带你搞定svg图标的使用! 文章目录 前言一、SVG相较于字体图标的优点二、使用步骤1.新建一个vue2项目2.安装项目依赖3 .在src目录下新建文件夹4.创建svg-icon组件5.在main.js中引入icons下的index.js6.配置 vue.config.js7.步骤完毕,检验成果 总结 前…

LoadRunner负载均衡与IP欺骗

目录 前言: 一、IP wizard 二、一个IP欺骗测试脚本 三、Controller与Runtime setting设置 四、mdrv.dat配置调整 五、查看实现效果 【结语】 前言: 在使用 LoadRunner 进行负载测试时,负载均衡和 IP 欺骗是两个重要的概念。 这次出差…

【UE Unreal Camera】【保姆级教程】手把手教你通过UE打开摄像头/预览图像画面

【UE Unreal Camera】【保姆级教程】手把手教你通过UE打开摄像头/预览图像画面 概述 最近在做一个游戏的开发,需要通过UE去打开用户的摄像头(ios,android上的手机摄像头;windows,mac上的电脑摄像头),预览图像&#xf…

NLP(五十七)LangChain使用Google Search Agent

大模型存在的问题 大模型在给人带来眼前一亮的表现,深深地震撼各行各业人们的同时,其本身也存在着不少问题。   以OpenAI的ChatGPT模型为例,其存在的问题有: 事实错误,容易一本正经地胡说八道,造成幻觉问…

重定向爬虫和多线程爬虫

前言 重定向爬虫是指在抓取网页时,如果目标网站内部存在重定向机制,即当你访问一个网页时,服务器会把你重定向到另一个目标网页。重定向爬虫可以帮助我们发现这种重定向链接,从而更有效地抓取目标网站的内容。 要实现重定向爬虫…

分享一些关于 CSS Grid 基础入门知识

网格系统(CSS Grid)是CSS中最重要的特性之一。它能够以简单的方式将元素对齐到列和行中。CSS网格使得设计复杂且响应式的网页变得更加容易,无需使用浮动、表格或定位。它还具有许多更强大的功能,如果你多加练习,就能发…

北京大学2018计算机学科夏令营上机考试

目录 A:计算两个日期之间的天数【暴力不水】 B:回文子串【暴力不水】 C:The Die Is Cast【DFS】 D:Euro Efficiency【看不懂】 E:重要逆序对【归并排序】 F:Tram【看不懂】 G:食物链【图】 H:DFS spanning tree【不会】 A:计算两个日期之间的天数【暴力不水】 //…

《微服务架构设计模式》第四章 使用Saga管理事务

内容总结自《微服务架构设计模式》 使用Saga管理事务 一、XA解决方案存在问题二、使用Saga管理事务Saga是什么补偿事务是什么Saga协调模式协同式Saga编排式Saga 隔离性Saga结构 三、总结 一、XA解决方案存在问题 在多个服务、数据库和消息代理之间维持数据一致性的传统方式是采…

小黑重庆归来,眼睛复查顺利,见到了三年没见的线上同门的leetcode之旅:剑指 Offer II 015. 字符串中的所有变位词

小黑代码1:滑动窗口 class Solution:def findAnagrams(self, s: str, p: str) -> List[int]:# 字符串长度n_s len(s)n_p len(p)if n_s < n_p:return []# 差值数组arr [0] * 26# 初始窗口for i in range(n_p):arr[ord(p[i])-97] - 1arr[ord(s[i])-97] 1# 计算初始窗口…

Web服务器群集:Tomcat配置https证书

目录 一、理论 1.SSL 2.HTTPS协议和HTTP协议的区别 3.https证书配置 4.tomcat强制使用https 二、实验 1.https证书配置过程 2.tomcat强制使用https 三、总结 一、理论 1.SSL &#xff08;1&#xff09;概念 SSL是网络加密传输协议&#xff0c;是支持在网络服务器(主…

chatgpt赋能python:烧录代码过程是怎样的

烧录代码过程是怎样的 烧录代码是将编写好的程序代码烧录进内置闪存器件&#xff08;Flash&#xff09;或外部存储器&#xff08;SD卡、EEPROM等&#xff09;中的过程。本文将介绍烧录代码的具体过程和常用工具&#xff0c;以及一些注意事项。 烧录代码的步骤 步骤一&#x…

分布式负载均衡 Ribbon

一、Ribbon简介 是Netfix发布的负载均衡&#xff0c;Eureka一般配合Ribbon进行使用&#xff0c;基于HTTP和TCP的客户端负载均衡工具。 只有负载均衡的能力&#xff0c;不具有发送请求的能力&#xff0c;要配合服务通信组件。 RestTemplate 针对各种类型的 HTTP 请求都提供了相…

青少年机器人技术一级考试备考重点(一):机器人常识

随着机器人技术的飞速发展&#xff0c;越来越多的青少年开始关注并参与其中。青少年机器人技术考试作为一项评估学生机器人技术水平的重要考试&#xff0c;备受广大青少年和家长的关注。为了更好地备战青少年机器人技术一级考试&#xff0c;了解考试的学习要点和备考重点是非常…

LeetCode-67. 二进制求和

LeetCode-67. 二进制求和 1、题目描述2、解题思路3、代码实现4、解题记录 ) 1、题目描述 题目描述&#xff1a; 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例1&#xff1a; 输入:a “11”, b “1” 输出&#xff1a;“100” 示例2&…

kafka实现消息接受和发送

1、首先引入依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency> <dependency><groupId>org.springframework.kafka</groupId><artifactId>spr…

第九十五天学习记录:C++核心:类和对象Ⅳ(五星重要)

C对象模型和this指针 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上 #include<iostream> using namespace std;class Person {int m_A;//非静态成员变量 属于类的对象上static int m_B;//静态成…

Gradio库的Gallery模块介绍与select方法详解

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…