【动手学深度学习】(十四)数据增广+微调

文章目录

  • 一、数据增强
    • 1.理论知识
    • 2.代码
  • 二、微调
    • 1.理论知识

一、数据增强

1.理论知识

  • 增加一个已有数据集,使得有更多的多样性
    • 在语言里面加入各种不同的背景噪音
    • 改变图片的颜色和形状

使用增强数据训练
翻转

  • 左右翻转
  • 上下翻转
    • 不总是可行

切割

  • 从图片中切割一块,然后变形到固定形状
    • 随机高宽比
    • 随机大小
    • 随机位置

颜色

  • 改变色调,饱和度,明亮度

[总结]

  • 数据增广通过变形数据来获取多样性从而使得模型泛化性能更好
  • 常见图片增广包括翻转、切割、变色

2.代码

1.读取图像

%matplotlib inline
import torch
import torchvision
from torch import nn
from d2l import torch as d2ld2l.set_figsize()
img = d2l.Image.open('../img/test.png')
d2l.plt.imshow(img);

在这里插入图片描述

def apply(img, aug, num_rows=2, num_cols=4, scale=1.5):Y = [aug(img) for _ in range(num_rows * num_cols)]d2l.show_images(Y, num_rows, num_cols, scale=scale)

水平翻转

apply(img, torchvision.transforms.RandomHorizontalFlip())
# 在水平方向进行随机翻转

在这里插入图片描述

上下翻转图像

# 上下翻转图像
apply(img, torchvision.transforms.RandomVerticalFlip())

在这里插入图片描述
随机裁剪

shape_aug = torchvision.transforms.RandomResizedCrop((200, 200), scale=(0.1, 1), ratio=(0.5, 2))
apply(img, shape_aug)

在这里插入图片描述
随机更改图片亮度

apply(img, torchvision.transforms.ColorJitter(brightness=0.5, contrast=0, saturation=0, hue=0))

在这里插入图片描述
随机更改图片的色调,亮度(brightness)对比度(contrast)饱和度(saturation)色调(hue)

# 随机更改图片的色调,亮度(brightness)对比度(contrast)饱和度(saturation)色调(hue)
color_aug = torchvision.transforms.ColorJitter(brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)
apply(img, color_aug)

在这里插入图片描述
结合多种图像增广方法

augs = torchvision.transforms.Compose([torchvision.transforms.RandomHorizontalFlip(),color_aug, shape_aug])
apply(img, augs)

在这里插入图片描述

all_images = torchvision.datasets.CIFAR10(train=True, root="../data", download=True)
d2l.show_images([all_images[i][0] for i in range(32)], 4, 8, scale=0.8);

在这里插入图片描述

# 只使用最简单的随机左右翻转
train_augs = torchvision.transforms.Compose([torchvision.transforms.RandomHorizontalFlip(),torchvision.transforms.ToTensor()])test_augs = torchvision.transforms.Compose([torchvision.transforms.ToTensor()])
# 定义一个辅助函数,以便于读取图像和应用图像增广
def load_cifar10(is_train, augs, batch_size):dataset = torchvision.datasets.CIFAR10(root="../data", train=is_train,transform=augs, download=True)dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=is_train,num_workers=0)return dataloader

二、微调

1.理论知识

标注一个数据集很贵
网络架构
在这里插入图片描述

  • 一个神经网络一般可以分成两块
    • 特征抽取将原始像素变成容易线性分割的特征
    • 线性分类器来做分类

微调
在这里插入图片描述
微调中的权重初始化
在这里插入图片描述

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

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

相关文章

【高效开发工具系列】DataGrip入门

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

文件操作2❤

一:文件的顺序读写 1:顺序读写函数 函数名 功能 适⽤于 fgetc 字符输⼊函数 所有输⼊流 fputc 字符输出函数 所有输出流 fgets ⽂本⾏输⼊函数 所有输⼊流 fputs ⽂本⾏输出函数 所有输出流 fscanf 格式化…

linux系统中出现大量不可中断进程和僵尸进程怎么办?

进程状态 当iowait升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断的状态,从ps或者top命令的输出中,可以发现它们都处于D状态,也就是不可中断状态。 通过top和ps可以查看进程的状态,S列表示…

Python学习开发mock接口

#1.测试为什么要开发接口? 1)在别的接口没有开发好的时候, mock接口(模拟接口) 2)查看数据, 避免直接操作数据库 #2.开发接口的顺序 1)安装flask flask是一个轻量级开发框架 pip install flask 2)开发一个接口 开发步骤: 1.实例化一个服务server:f…

普冉(PUYA)单片机开发笔记(9): FLASH 读写

概述 单片机的 ROM 容量虽然不大,PY32F003 有 64K 字节的 ROM,但实际应用中会在 MCU 中存储持久化的数据,例如:在物联网应用中,需要把物模型持久化,作为非易失性数据,掉电了也要保存。这就要用…

1845_emacs中一个中文乱码问题分析解决

Grey 全部学习内容汇总:GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 1845_emacs中一个中文乱码问题分析解决 曾经有一次放弃过我自己的emacs配置,一个原因就是中文的支持。感觉我的配置跟其他人的配置显得有些…

深度学习(生成式模型)——ADM:Diffusion Models Beat GANs on Image Synthesis

文章目录 前言基础模型结构UNet结构Timestep Embedding关于为什么需要timestep embedding global attention layer 如何提升diffusion model生成图像的质量Classifier guidance实验结果 前言 在前几篇博文中,我们已经介绍了DDPM、DDIM、Classifier guidance等相关的…

leetcode做题笔记2415. 反转二叉树的奇数层

给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。 例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] ,那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。 反转后,返回树的根节点。 完美 二叉树需满足…

【STM32单片机】旋转太空人设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使IIC OLED液晶等。 主要功能: 系统运行后,OLED显示动画界面。 二、软件设计 /* 作者:嗨小易(QQ&#x…

vue中实现PDF文件流预览

代码示例 <template><div class"print"><div v-if"!viewShow" class"opt-box"><div style"height: 700px; overflow: auto;"><el-table :data"tableData" border><el-table-column prop…

HTML基础标签

但实际上无论声明为中文还是英文都可以写&#xff0c;中文/英文 主要是浏览器在进行调用翻译功能的时候&#xff0c;会按照声明的语言来进行翻译。 标签语义&#xff1a; 标签的属性一般都是在第一个标签中定义该标签效果所拥有的属性。 即标签的作用是什么 <>标签功能…

CSS——标准流、浮动、Flex布局

1、标准流 标准流也叫文档流&#xff0c;指的是标签在页面中默认的排布规则&#xff0c;例如&#xff1a;块元素独占一行&#xff0c;行内元素可以一行显示多个。 2、浮动 作用&#xff1a;让块元素水平排列 属性名&#xff1a;float 属性值&#xff1a; left&#xff1a;…

做为一个产品经理带你详细了解--动态面板的使用

&#x1f4da;&#x1f4da; &#x1f3c5;我是bing人&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一…

卫星影像5天一更新的地图网站

如果全球影像每5天一更新&#xff0c;并集多种地图数据源于一体的PB级海量地图数据该怎样去管理呢&#xff1f; 这是当我了解到SOAR网站之后&#xff0c;思考过的一个问题。 全球最大的在线地图网站 在SOAR的官方网站&#xff0c;据称它是世界上最大的在线地图网站。 它是集…

如何远程访问Axure RP制作的本地web站点实现协同办公

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…

深入理解Java关键字volatile

前置知识-了解以下CPU结构 如下图所示&#xff0c;每个CPU都会有自己的一二级缓存&#xff0c;其中一级缓存分为数据缓存和指令缓存&#xff0c;这些缓存的数据都是从内存中读取的&#xff0c;而且每次都会加载一个cache line&#xff0c;关于cache line的大小可以使用命令cat…

stm32与Freertos入门(二)移植FreeRTOS到STM32中

简介 注意&#xff1a;FreeRTOS并不是实时操作系统&#xff0c;而是分时复用的&#xff0c;只不过切换频率很快&#xff0c;感觉上是同时在工作。本次使用的单片机型号为STM32F103C8T6,通过CubeMX快速移植。 一、CubeMX快速移植 1、选择芯片 打开CubeMX软件&#xff0c;进行…

(独白)我为什么选择了计算机行业?

为什么可能很简单&#xff0c;但为什么的为什么就有点长了。就当作讲故事吧 在高中毕业后选择专业时&#xff0c;和大多数人一样&#xff0c;我根本不知道要选择什么专业&#xff0c;更不知道哪个专业发展前景好&#xff0c;哪个专业好就业。在当时比较火的专业我记得应该是土…

使用广播星历进行 GPS 卫星位置的计算

目录 1.计算卫星运动的平均角速度 n 2.计算观测瞬间卫星的近地点角 3.计算偏近点角 4.计算真近点角 f 5.计算升交角距 6.计算摄动改正项 7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置 9.计算观测瞬间升交点的经度 L 10.计算卫星在瞬时地球坐标系中的位置 11.…

JDK21+HADOOP3.2.2+Windows安装步骤

哈哈哈 最近转战大数据这块了&#xff0c;分享一下hadoop3.2.2的安装步骤 借鉴了不少大佬的文章&#xff0c;如有雷同&#xff0c;都是大佬们的 1.JDK安装 我选择的是JDK21 以下是下载网址和截图&#xff0c;这个没有太多的&#xff0c;一般下载最新的就可以 JDK: Java Down…