当前位置: 首页 > news >正文

昇思25天学习打卡营第24天|ResNet50迁移学习

课程打卡凭证

迁移学习

迁移学习是机器学习中一个重要的技术,通过在一个任务上训练的模型来改善在另一个相关任务上的表现。在深度学习中,迁移学习通常涉及在一个大型数据集(如ImageNet)上预训练的模型上进行微调,以便它可以应用于目标数据集。这里将使用迁移学习对ImageNet数据集的狼和狗进行分类。

数据集准备与加载

下载数据集。

定义初始值。

导入必要的库和模块。

定义数据集的目录路径,分别用于训练和验证数据集。

使用ImageFolderDataset方法加载图像数据集,并指定并行工作线程数和是否打乱数据。

定义图像的均值和标准差,用于归一化操作。scale用于调整图像大小。

对于训练数据集,进行随机裁剪、随机水平翻转、归一化和格式转换的操作。对于验证数据集,进行解码、调整大小、中心裁剪、归一化和格式转换的操作。

使用定义的预处理操作对图像数据进行映射,再将数据集进行批量处理,并返回处理好的数据集。最后调用函数创建训练和验证数据集,并获取每个数据集的大小。

从数据集中加载一个批次的图像和标签,并打印它们的形状和标签信息。

对上述数据和标签进行可视化,结果如下图所示。

构建ResNet50网络

导入必要的库和模块,设置参数初始值。

初始化残差块,接受输入通道数、输出通道数、步长、归一化层和下采样层作为参数。其中归一化层默认为nn.BatchNorm2d。

定义两个卷积层,卷积核大小为 3x3,使用ReLU激活函数。定义下采样层,用于在输入和输出维度不同时调整输入维度。

主分支第一层将输入通过第一个卷积层和归一化层,然后应用ReLU激活函数。主分支第二层则将输出通过第二个卷积层和归一化层。将主分支的输出和identity相加,形成残差连接。最后,再次应用ReLU激活函数。

始化了残差块,接受输入通道数、输出通道数、步长和下采样层作为参数。

  • self.conv1定义了一个1x1卷积层,用于减少通道数。
  • self.norm1对应第一个卷积层的批归一化层。
  • self.conv2定义了一个3x3卷积层,用于特征提取,步长由 stride 参数决定。
  • self.norm2对应第二个卷积层的批归一化层。
  • self.conv3定义了一个1x1卷积层,用于恢复通道数,通道数为 out_channel 的4倍。
  • self.norm3对应第三个卷积层的批归一化层。
  • self.relu定义了ReLU激活函数。
  • self.down_sample定义了下采样层,用于在输入和输出维度不同时调整输入维度。

主分支第一层将输入通过第一个1x1卷积层和归一化层,然后应用ReLU激活函数。主分支第二层将输出通过第二个3x3卷积层和归一化层,然后应用ReLU激活函数。主分支第三层将输出通过第三个1x1卷积层和归一化层。再将主分支的输出和identity相加,形成残差连接。最后,再次应用ReLU激活函数。

定义函数用于构建ResNet网络中的一个层,该层由多个残差块堆叠而成。通过判断是否需要下采样来调整输入维度,并通过循环堆叠指定数量的残差块。

定义一个ResNet类,用于构建ResNet50模型。

定义ResNet网络的前向传播过程。

函数 _resnet 用于实例化ResNet并加载预训练模型。

resnet50函数用于构建和返回一个ResNet50模型。

固定特征进行训练

导入必要的库和模块,加载预训练的ResNet50模型。

获取并修改全连接层的输入通道数,再将ResNet50的全连接层输出通道数改为2,用于狼和狗的二分类。最后修改平均池化层的kernel size为7。

冻结模型中除最后一层外的所有参数,以避免这些层在训练过程中更新。

使用动量优化器,并设定学习率和动量。定义交叉熵损失函数。

定义前向传播函数 forward_fn,计算预测值和损失。使用 ms.value_and_grad 获取前向传播和梯度计算的函数 grad_fn。定义训练步骤函数 train_step,计算损失和梯度,并更新模型参数。最后实例化训练模型。

加载数据集并设置训练和验证数据迭代器,设置训练参数。

导入必要的库和模块,初始化训练循环。

定义训练循环。

在每个训练轮次结束后,使用验证数据集评估模型的准确率。记录训练轮次结束时间,并计算本轮训练的总时间以及每步的平均时间。打印当前训练轮次的平均训练损失和准确率,以及训练时间统计。

保存最佳模型,打印结束信息。

训练结果如图所示。

可视化模型预测

可视化模型的预测结果,展示图像及其预测类别,结果如下图所示。

相关文章:

昇思25天学习打卡营第24天|ResNet50迁移学习

课程打卡凭证 迁移学习 迁移学习是机器学习中一个重要的技术,通过在一个任务上训练的模型来改善在另一个相关任务上的表现。在深度学习中,迁移学习通常涉及在一个大型数据集(如ImageNet)上预训练的模型上进行微调,以便…...

Shell 构建flutter + Navtive 生成IPA

具体实现: #1. 在工程的根目录下,建立文件夹build_iOS文件,在此文件下建立build_iOS.sh的文件,把以下内容copy进sh文件;build_iOS.sh 就是第5步之后整个的脚本内容。 #2. 进入build_iOS.sh 文件的目录; #3. 在build_iOS 文件夹配置打包的DEVELOPExportOptionsPlist…...

python gradio 的输出展示组件

HTML:展示HTML内容,适用于富文本或网页布局。JSON:以JSON格式展示数据,便于查看结构化数据。KeyValues:以键值对形式展示数据。Label:展示文本标签,适用于简单的文本输出。Markdown:…...

SwiftUI 6.0(Xcode 16)新 PreviewModifier 协议让预览调试如虎添翼

概览 用 SwiftUI 框架开发过应用的小伙伴们都知道,SwiftUI 中的视图由各种属性和绑定“扑朔迷离”的缠绕在一起,自成体系。 想要在 Xcode 预览中泰然处之的调试 SwiftUI 视图有时并不是件容易的事。其中,最让人秃头码农们头疼的恐怕就要数如…...

STM32被拔网线 LWIP的TCP无法重连解决方案

目录 一、问题描述 二、项目构成 三、问题解决 1.问题代码 2.解决思路 3.核心代码: 四、完整代码 1.监测网口插入拔出任务 2.TCP任务 3.创建tcp任务 4.删除tcp任务 五、总结 一、问题描述 最近遇到一个问题,就是我的stm32设备作为tcp客户端…...

Linux下开放指定端口

比如需要开放82端口: #查询是否开通 firewall-cmd --query-port82/tcp#开放端口82 firewall-cmd --zonepublic --add-port82/tcp --permanent#重新加载防火墙 firewall-cmd --reload...

亚马逊测评行为的识别与防范:教你如何搭建安全的测评环境

亚马逊平台以其严格的内部系统和精密的买家信息对比机制而闻名。一旦发现买家存在不当评价行为,系统会立即展开深入的调查,追溯其所有的购买和评价记录。如果确认该买家存在补评价的行为,那么他/她之前留下的所有评价都可能会被系统自动删除。…...

如何通过成熟的外发平台,实现文档安全外发管理?

文档安全外发管理是企业信息安全管理的重要组成部分,它涉及到企业向外发送的文件,需要进行严格的控制和管理,防止敏感或机密信息的泄露。以下是一些关键考虑因素: 文件外发的挑战:企业在文件外发时面临的主要挑战包括…...

SCI一区级 | Matlab实现SSA-CNN-GRU-Multihead-Attention多变量时间序列预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现SSA-CNN-GRU-Multihead-Attention麻雀算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测,要求Matlab2023版以上; 2.输入多个特征,输出单个…...

Mysql中的几种常见日志

引言 本文是对Mysql中几种常见日志及其作用的介绍 一、error log(错误日志) MySQL 中的 error log(错误日志)是一种非常重要的日志类型,它记录了 MySQL 服务器在启动、运行及关闭过程中遇到的所有重要事件、错误信…...

2024年7月22日(nfs samba)

一、webserver 服务器:作用是发布nginx的web项目 1、安装nginx(只下载不安装) [rootweb_server ~]# yum -y install --downloadonly --downloaddir./soft/ nginx 2、配置一个本地的nginx仓库 [rootweb_server ~]# yum -y install createrepo…...

黑龙江网络安全等级保护测评策略概述

一、简介 黑龙江省网络安全等级保护测评策略是为了保障信息系统安全稳定运行,根据《网络安全法》和相关国家标准制定的综合性安全评估和加固过程。该策略不仅要求企业和机构明确自身信息系统的安全等级,还指导其实施相应的技术防护与管理措施&#xff0…...

笔记 7 :linux 011 注释,函 bread () , get_hash_table () , find_buffer ()

(57)接着介绍另一个读盘块的函数 bread,以及释放 bh 的函数 brelse( ): (58)因为 函数 get_blk()大量调用了其它函数,一版面列举不完,…...

vscode配置latex环境制作【文档、简历、resume】

vscode配置latex环境制作【文档、简历、resume】 1. 安装Tex Live及vscode插件 可以参考:vscode配置latex环境制作beamer ppt 2. 添加vscode配置文件 打开vscode,按下Ctrl Shift P打开搜索框,搜索Preference: Open User Settings (JSON…...

如何学习Spark:糙快猛的大数据之旅

作为一名大数据开发者,我深知学习Spark的重要性。今天,我想和大家分享一下我的Spark学习心得,希望能够帮助到正在学习或准备学习Spark的朋友们。 目录 Spark是什么?学习Spark的"糙快猛"之道1. 不要追求完美,在实践中学习2. 利用大模型作为24小时助教3. 根据自己的节…...

交换机(Switches)和桥(Bridges)的区别

交换机(Switches)和桥接器(Bridges)在网络和通信领域中都起着重要作用,它们有一些共同点,但也有一些显著的区别: 工作层次: 桥接器(Bridges):桥接…...

基于springboot+vue的汽车租赁管理系统

摘要 在当今快速发展的数字化时代,汽车租赁行业作为现代服务业的重要组成部分,正面临着前所未有的机遇与挑战。为提升管理效率、优化用户体验并促进业务增长,我们设计并实现了一套基于Spring Boot后端框架与Vue.js前端技术的汽车租赁管理系统…...

《0基础》学习Python——第二十二讲__网络爬虫/<5>爬取豆瓣电影封面图

一、爬取豆瓣电影的图片封面 1、经过上节课我们所爬取的豆瓣电影的电影名、年份、国家、导演、主演、剧情,那么接下来我们将学习如何去爬取这些电影的图片,并将这些图片存放在文件夹中。 2、过程实现: 2.1、获取网页源码 首先还是和爬取电影名…...

全新UI自助图文打印系统小程序源码/自助云打印机前后端源码

全新UI自助图文打印系统小程序源码,自助云打印机前后端源码。最新的自助图文打印系统和证件照云打印小程序源码采用了PHP作为后端开发语言,旨在为用户提供全面的自助打印服务。 这些服务覆盖了多种文件格式,包括文档、图片、表格等。除此之外…...

yolo5图片视频、摄像头推理demo

yolo5图片、视频推理demo 图片 import torch# 加载预训练模型 model torch.hub.load(./yolo5, custom, pathyolov5s.pt, sourcelocal)# 加载图片 img 1.jpg# 进行推理 results model(img)# 解析结果 detections results.xyxy[0].cpu().numpy() # [x1, y1, x2, y2, confid…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...