【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实际上是将多张图片拼接起来,参照官方介绍:

相关推荐
脑海科技实验室5 分钟前
Nature子刊:新研究!人工智能提供更清晰的功能MRI脑数据
人工智能·fmri
qyr678922 分钟前
便携式太阳能折叠板市场白皮书与未来趋势展望
大数据·人工智能·物联网·市场分析·市场报告·便携式太阳能折叠板·太阳能折叠板
yunhuibin34 分钟前
AlexNet网络学习
人工智能·python·深度学习·神经网络
肾透侧视攻城狮1 小时前
《从fit()到分布式训练:深度解锁TensorFlow模型训练全栈技能》
人工智能·深度学习·tensorflow 模型训练·模型训练中的fit方法·自定义训练循环·回调函数使用·混合精度/分布式训练
索木木1 小时前
大模型训练CP切分(与TP、SP结合)
人工智能·深度学习·机器学习·大模型·训练·cp·切分
喵手1 小时前
Python爬虫实战:增量爬虫实战 - 利用 HTTP 缓存机制实现“极致减负”(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·增量爬虫·http缓存机制·极致减负
DevilSeagull2 小时前
C语言: 动态内存管理
人工智能·语言模型·自然语言处理
一个处女座的程序猿O(∩_∩)O2 小时前
Python异常处理完全指南:KeyError、TypeError、ValueError深度解析
开发语言·python
was1722 小时前
使用 Python 脚本一键上传图片到兰空图床并自动复制链接
python·api上传·自建图床·一键脚本
破晓之翼2 小时前
从第一性原理和工程控制论角度企业去思考AI开发避免完美主义陷阱
人工智能