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

【Pytorch】数据集的加载和处理(一)

 Pytorch torchvision 包提供了很多常用数据集

数据按照用途一般分为三组:训练(train)、验证(validation)和测试(test)。使用训练数据集来训练模型,使用验证数据集跟踪模型在训练期间的性能,使用测试数据集对模型进行最终评估。

目录

导入MNIST训练数据集

提取训练数据和标签

同理操作验证数据集

给张量添加维度

打印示例图像


导入MNIST训练数据集

从 torchvision导入MNIST训练数据集

import torch
import torchvision
from torchvision import datasets
train_data=datasets.MNIST("./data",train=True,download=True)

datasets.MNIST是Pytorch的内置函数

train=True指导入的数据作为训练数据集

download=True若根目录下没有数据集时自动下载

 导入完成后可以看到MINST文件内的数据集

提取训练数据和标签

x_train, y_train=train_data.data,train_data.targets
print(x_train.shape)
print(y_train.shape)

x_train存储60000张28*28的图片,y_train存储60000张图片对应的数字(label)

同理操作验证数据集

从 torchvision导入MNIST验证数据集并提取数据和标签

val_data=datasets.MNIST("./data", train=False, download=True)
x_val,y_val=val_data.data, val_data.targets
print(x_val.shape)
print(y_val.shape)

 

给张量添加维度

Pytorch中张量可以是一维、二维、三维或者更高维度的数据结构。一维张量类似于向量,二维张量类似于矩阵,三维张量类似一系列矩阵的堆叠。添加新的维度可以更好地对数据进行表示和处理。

if len(x_train.shape)==3:x_train=x_train.unsqueeze(1)
print(x_train.shape)if len(x_val.shape)==3:x_val=x_val.unsqueeze(1)
print(x_val.shape)

 .unsqueeze(0)指添加在第一个维度

也可以通过x_train.view(60000,1,28,28)添加维度

可以看到张量由三维变为了四维 

打印示例图像

引入所需的包,定义一个辅助函数,将张量显示为图像

from torchvision import utils
import matplotlib.pyplot as plt
import numpy as np
def show(img):npimg = img.numpy()npimg_tr=np.transpose(npimg, (1,2,0))plt.imshow(npimg_tr,interpolation='nearest')

创建一个10*10的网格,每行10张图片,pedding=3指间隔为3

x_grid=utils.make_grid(x_train[:100], nrow=10, padding=3)
print(x_grid.shape)
show(x_grid)

utils.make_grid实际上是将多张图片拼接起来,参照官方介绍:

相关文章:

  • lodash将对象转换成http参数
  • Matlab进阶绘图第63期—带标记线的三维填充折线图
  • InterSystems IRIS使用python pyodbc连接 windows环境,odbc驱动安装,DSN配置,数据源配置
  • 科技与狠活
  • elementui 日历组件el-calendar使用总结
  • GESP C++ 三级真题(2023年9月)T1 ⼩ 杨储蓄
  • Ceph资源池pool管理
  • 常用图像分类、目标检测模型性能测试
  • Spring自动装配
  • C# 4.0 等待线程结束
  • C++ 入门14:STL 容器之向量(vector)
  • C++基础(二)
  • SourceTree rebase(变基)的使用
  • Gooxi受邀参加第三届中国数据中心服务器与设备峰会
  • AGI 之 【Hugging Face】 的【问答系统】的 [评估并改进问答Pipeline] / [ 生成式问答 ] 的简单整理
  • 2017年终总结、随想
  • css系列之关于字体的事
  • Docker: 容器互访的三种方式
  • github从入门到放弃(1)
  • Laravel Mix运行时关于es2015报错解决方案
  • Magento 1.x 中文订单打印乱码
  • python3 使用 asyncio 代替线程
  • REST架构的思考
  • Sass 快速入门教程
  • Selenium实战教程系列(二)---元素定位
  • Spring Boot快速入门(一):Hello Spring Boot
  • 闭包,sync使用细节
  • - 概述 - 《设计模式(极简c++版)》
  • 记录:CentOS7.2配置LNMP环境记录
  • 前嗅ForeSpider中数据浏览界面介绍
  • 使用Swoole加速Laravel(正式环境中)
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​补​充​经​纬​恒​润​一​面​
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • #QT项目实战(天气预报)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • $.ajax,axios,fetch三种ajax请求的区别
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (04)odoo视图操作
  • (06)Hive——正则表达式
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)c52学习之旅-点亮LED灯
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四)汇编语言——简单程序
  • (一)RocketMQ初步认识
  • *Django中的Ajax 纯js的书写样式1
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net/c# memcached 获取所有缓存键(keys)
  • .php文件都打不开,打不开php文件怎么办