处理训练和验证数据集

📚博客主页:knighthood2001
公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下)
🎃知识星球:【认知up吧|成长|副业】介绍
❤️如遇文章付费,可先看看我公众号中是否发布免费文章❤️
🙏笔者水平有限,欢迎各位大佬指点,相互学习进步!

对于自己的数据集,这里以猫狗分类数据集为例。

在这里插入图片描述
为什么这样分,一方面也是为了符合ImageFolder中数据的输入。

import torch
from torchvision.datasets import ImageFolder
from torchvision import transforms
import torch.utils.data as Data
import matplotlib.pyplot as plt
from model import GoogLeNet, Inception
import torch.nn as nn
import pandas as pd
# 处理和准备训练和验证数据集。
def train_val_data_process():"""处理和划分训练和验证数据集,并返回对应的数据加载器。Returns:tuple: 包含两个数据加载器的元组,分别对应训练集和验证集。"""# 定义数据集的路径ROOT_TRAIN = r'data\train'# 归一化操作,它通常用于图像数据的预处理(TODO 不同数据,归一化的均值和标准差不同)normalize = transforms.Normalize([0.162, 0.151, 0.138], [0.058, 0.052, 0.048])# 首先,图像被调整到224x224的大小,然后转换为PyTorch的Tensor格式,最后应用之前定义的归一化操作。train_transform = transforms.Compose([transforms.Resize((224, 224)), transforms.ToTensor(), normalize])# 加载数据集train_data = ImageFolder(ROOT_TRAIN, transform=train_transform)# 80%的数据被分配给训练集,20%的数据被分配给验证集。train_data, val_data = Data.random_split(train_data, [round(0.8*len(train_data)), round(0.2*len(train_data))])# 使用DataLoader类为训练和验证集创建了数据加载器train_dataloader = Data.DataLoader(dataset=train_data,batch_size=16,shuffle=True,num_workers=2)val_dataloader = Data.DataLoader(dataset=val_data,batch_size=16,shuffle=True,num_workers=2)return train_dataloader, val_dataloader

首先,归一化操作的目的是使得神经网络训练的更好。

然后,图像被调整到224x224的大小,然后转换为PyTorch的Tensor格式,最后应用之前定义的归一化操作。

接下来这个ImageFolder在我的文章:Pytorch的ImageFolder数据加载器 中讲过了。

然后就是random_split函数了。我在前文也讲过了,这里为什么需要用到round()函数,是因为原始数据被分割为训练集和验证集时,得确保分割长度的总和等于数据集的长度。round函数是用来四舍五入的,而不是都是往下取整。这样就确保了分割长度的总和等于数据集的长度

接着,使用DataLoader类去创建数据加载器,方便后续训练的时候用。

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

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

相关文章

C++和Python蚂蚁搬食和蚊虫趋光性和浮标机群行为算法神经网络

🎯要点 🎯机器人群行为配置和C行为实现:🖊脚底机器人狭隘空间导航避让障碍物行为 | 🖊脚底机器人使用摄像头耦合共振,实现同步动作 | 🖊脚底机器群使用相机,计算彼此间“分子间势能…

Docker——简介、安装(Ubuntu22.04)

1、简介 Docker 是一个开源的容器化平台,旨在简化应用程序的开发、交付和运行。它通过将应用程序及其所有依赖项打包到一个称为容器的标准化单元中,使应用程序能够在任何环境中一致地运行。Docker 解决了“在我的机器上能运行”的问题,使开发…

8、开发与大模型对话的独立语音设备

一、设计原理 该系统的核心部分主要由ESP32-WROVER开发板和ESP32-CAM摄像头、MAX9814麦克风放大器模块、MAX98357功放、声音传感器和SU-03T语音识别芯片构成。通过使用ESP32-WROVER开发板,用户可以实现通过语音与ai进行交互并进行人脸识别。 系统中,从外部输入电源中获取电源…

计算机网络-组播分发树与组播协议

一、组播分发树 前面我们大致了解了下组播的转发原理,通过RPF反向路径检查可以形成无环的组播转发路径,今天继续学习下组播分发树和组播协议。 组播数据转发需要保证转发路径无环,无次优路径且无重复包。通过RPF机制与组播路由协议&#xff0…

王老师 linux c++ 通信架构 笔记(一)

(0)本门课程会涉及很多知识。在此集中记录,做笔记,也可能加入别的专栏。 (1) vmware 15 的下载和密钥上网查找。 ubuntu - 16 - 04 的版本才 800 M ,来 csdn 找镜像 下载。 (2&#…

React Native 和 Flutter 的开发对比

React Native (RN) 和 Flutter 都是用于构建跨平台移动应用程序的流行框架。两者都具有各自的优势和劣势,选择哪个框架取决于您的具体需求和项目。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 以下是一些 RN 和 Flutter…

1012-27SF 同轴连接器

型号简介 1012-27SF是Southwest Microwave的2.92 mm连接器。该连接器使用不锈钢合金外壳和镀金接触表面提供了良好的耐腐蚀性和耐磨损性,延长了连接器的使用寿命。适用于高频应用,最高可达 40 GHz,使其适用于微波和射频通信、雷达系统等领域。…

VMware Workstation桥接模式无法上网

问题背景 我之前创建过一个虚拟机,当时虚拟机的网络模式使用的是桥接模式,配置好了固定ip地址,是可以正常上网的,中间没有做任何网络上面的配置。但是今天再打开这台虚拟机时,发现竟然不能上网了。 物理主机的ip信息配…

【掌握C++ string 类】——【高效字符串操作】的【现代编程艺术】

专栏&#xff1a;C学习笔记 上一篇&#xff1a;【C】——【 STL简介】——【详细讲解】 1. 为什么要学习 string 类&#xff1f; 1.1 C 语言中的字符串 在 C 语言中&#xff0c;字符串是以 \0 结尾的字符集合。如下所示&#xff1a; #include <stdio.h>int main() {c…

AI产品经理必懂的13种技术

AI产品经理和互联网产品经理一样&#xff0c;也会面临要不要懂技术&#xff0c;懂什么技术&#xff0c;到什么程度的问题&#xff0c;本章针对这一常见问题给出了解答。 AI产品经理一定要懂技术&#xff0c;懂技术重点是要懂产品方案包含的AI算法、数据、算力及硬件的相关技术…

nftables(2)表、链、规则查询和管理(新增、插入、修改、删除)

简介 在上篇文章中&#xff0c;我们介绍了nftables基本原理以及与iptables的区别&#xff0c;nftables安装和配置保存的操作。这篇文章主要介绍nftables的基本操作&#xff0c;表、链、规则的新增、插入、修改、删除等操作。 注意&#xff1a;在进行nftables实验时和iptables…

AI自动生成PPT怎么用?看完这篇文章你就知道啦

小暑&#xff0c;作为夏季的第五个节气&#xff0c;标志着炎炎夏日的正式到来。在这个时节&#xff0c;阳光明媚&#xff0c;万物生长&#xff0c;人们的心情也随着气温的升高而变得热烈。 然而&#xff0c;对于许多职场人士来说&#xff0c;小暑的到来也意味着需要准备各种汇报…

spark shuffle写操作——SortShuffleWriter

写入的简单流程&#xff1a; 1.生成ExternalSorter对象 2.将消息都是插入ExternalSorter对象中 3.获取到mapOutputWriter&#xff0c;将中间产生的临时文件合并到一个临时文件 4.生成最后的data文件和index文件 可以看到写入的重点类是ExternalSorter对象 ExternalSorter 基…

包装类的128陷阱

我们先看一段代码 Integer num1100; Integer num2100; System.out.println(num1 num2); //trueInteger num3128; Integer num4128; System.out.println(num3 num4); //false 在执行之后&#xff0c;我们会发现num1num2是true&#xff0c;而num3num4却是false&#xff0c;…

Thingsboard 系列之通过 ESP8266+MQTT 模拟设备上报数据到平台

前置工作 Thingsboard平台ESP 8266 NodeMCU 开发板IDE&#xff1a; Arduino 或 VScode 均可 服务端具体对接流程 系统管理员账号通过 Thingsboard 控制面板创建租户等信息并以租户账号登录 实体 —> 设备维护具体设备信息 创建完成后通过管理凭据修改或直接复制访问令牌…

实力上榜!Coremail连续5年入选中国网络安全市场全景图

7月4日&#xff0c;网络安全行业研究机构数说安全正式发布《2024年中国网络安全市场全景图》&#xff08;以下简称“全景图”&#xff09;&#xff0c;这是自2018年开始&#xff0c;数说安全发布的第七版全景图。 作为国内头部电子邮件产品与解决方案提供商&#xff0c;Coremai…

Linux基础: 二. Linux的目录和文件

文章目录 二. Linux的目录和文件1.1 目录概要1.2 目录详细说明 二. Linux的目录和文件 1.1 目录概要 command&#xff1a;ls / Linux的文件系统像一棵树一样&#xff0c;树干是根目录&#xff08;/&#xff09;&#xff0c;树枝是子目录&#xff0c;树叶是文件&#xff1b; …

Qt 网络编程实战

一.获取主机的网络信息 需要添加network模块 QT core gui network主要涉及的类分析 QHostInfo类 QHostInfo::localHostName() 获取本地的主机名QHostInfo::fromName(const QString &) 获取指定主机的主机信息 addresses接口 QNetworkInterface类 QNetworkInterfac…

AI绘画Stable Diffusion:超强InstantID插件—面部特征一致性风格保持与迁移,轻松搞定私人写真摄影,SDWebUI使用指南

大家好&#xff0c;我是设计师阿威 最近经常有同学问到AI绘画Stable Diffusion 关于风格迁移IPA、Instant ID等安装和使用方法&#xff0c;内容虽基础但也属常用工具。因此&#xff0c;本文将核心介绍Instant ID 使用和墨幽人造人XL体验&#xff08;这是一款可出图商用的写实摄…

uniapp微信小程序端实现微信登录

从网上看了一些&#xff0c;好像说是要先调用uni.getUserProfile 或者uni.getUserInfo获取用户信息后&#xff0c;然后再调用uni.login才行&#xff0c;但是我看着uni.getUserProfile和uni.getUserInfo 返回的都是一些匿名信息&#xff08;nickName: "微信用户", 头像…