PyTorch 深度学习 || 专题三:PyTorch 数据的准备

news/2024/10/23 9:28:36/

PyTorch 数据的准备

1. 生成数据的准备工作

import torch
import torch.utils.data as Data#准备建模数据
x = torch.unsqueeze(torch.linspace(-1, 1, 500), dim=1) # 生成列向量
y = x.pow(3) # y=x^3#设置超参数
batch_size = 15 # 分块大小
torch.manual_seed(10) # 设置种子点#设置数据加载器
dataset = Data.TensorDataset(x, y) # 通过 Data 对象构造数据集
loader = Data.DataLoader(dataset=dataset,batch_size=batch_size,shuffle=True,num_workers=2)for step, (batch_x, batch_y) in enumerate(loader):print(step,(batch_x.data.shape, batch_y.data.shape)) # 分批处理

0 (torch.Size([15, 1]), torch.Size([15, 1]))
1 (torch.Size([15, 1]), torch.Size([15, 1]))
2 (torch.Size([15, 1]), torch.Size([15, 1]))
3 (torch.Size([15, 1]), torch.Size([15, 1]))
4 (torch.Size([15, 1]), torch.Size([15, 1]))
5 (torch.Size([15, 1]), torch.Size([15, 1]))
6 (torch.Size([15, 1]), torch.Size([15, 1]))
7 (torch.Size([15, 1]), torch.Size([15, 1]))
8 (torch.Size([15, 1]), torch.Size([15, 1]))
9 (torch.Size([15, 1]), torch.Size([15, 1]))
10 (torch.Size([15, 1]), torch.Size([15, 1]))
11 (torch.Size([15, 1]), torch.Size([15, 1]))
12 (torch.Size([15, 1]), torch.Size([15, 1]))
13 (torch.Size([15, 1]), torch.Size([15, 1]))
14 (torch.Size([15, 1]), torch.Size([15, 1]))
15 (torch.Size([15, 1]), torch.Size([15, 1]))
16 (torch.Size([15, 1]), torch.Size([15, 1]))
17 (torch.Size([15, 1]), torch.Size([15, 1]))
18 (torch.Size([15, 1]), torch.Size([15, 1]))
19 (torch.Size([15, 1]), torch.Size([15, 1]))
20 (torch.Size([15, 1]), torch.Size([15, 1]))
21 (torch.Size([15, 1]), torch.Size([15, 1]))
22 (torch.Size([15, 1]), torch.Size([15, 1]))
23 (torch.Size([15, 1]), torch.Size([15, 1]))
24 (torch.Size([15, 1]), torch.Size([15, 1]))
25 (torch.Size([15, 1]), torch.Size([15, 1]))
26 (torch.Size([15, 1]), torch.Size([15, 1]))
27 (torch.Size([15, 1]), torch.Size([15, 1]))
28 (torch.Size([15, 1]), torch.Size([15, 1]))
29 (torch.Size([15, 1]), torch.Size([15, 1]))
30 (torch.Size([15, 1]), torch.Size([15, 1]))
31 (torch.Size([15, 1]), torch.Size([15, 1]))
32 (torch.Size([15, 1]), torch.Size([15, 1]))
33 (torch.Size([5, 1]), torch.Size([5, 1]))

2. 本地数据的准备工作

import torch
import numpy as np
import pandas as pd
import datetime
from sklearn import preprocessingfeatures = pd.read_csv('temps.csv')#标签,要预测的温度的真实值
labels = np.array(features['actual'])#在特征中去掉标签
features = features.drop('actual', axis=1)#训练集每列名字单独保存,留备用
feature_list = list(features.columns)#转换成合适的格式
features = np.array(features)
input_features = preprocessing.StandardScaler().fit_transform(features)batch_size = 8 # 设置每一批数据集的大小
step = 0for start in range(0, len(input_features), batch_size):end = start + batch_size if start + batch_size < len(input_features) else len(input_features)xx = torch.tensor(input_features[start:end], dtype=torch.float, requires_grad=True)yy = torch.tensor(labels[start:end], dtype=torch.float, requires_grad=True)print(step,(xx.data.shape,yy.data.shape))step = step + 1

0 (torch.Size([8, 6]), torch.Size([8]))
1 (torch.Size([8, 6]), torch.Size([8]))
2 (torch.Size([8, 6]), torch.Size([8]))
3 (torch.Size([6, 6]), torch.Size([6]))

3. 网络数据的准备工作

图像分类数据集Fashion-MNIST

import matplotlib.pyplot as plt
# 其中matplotlib包可用于作图,且设置成嵌入式
import torch
import torchvision #torchvision这个库 它是一Pytorch对于个计算机识别一些模型实现的一个库。
import torchvision.transforms as transforms #对数据进行操作的一个模具。
import matplotlib.pyplot as plt
import time
import sys
from IPython import display

获取数据集

"""
通过框架中的内置函数将Fashion-MNIST数据集下载并读取到内存中
通过ToTensor实例将图像数据从PLL类型变换成32位浮点数格式,最简单的一个预处理 transform=transforms.ToTensor()
"""# 训练数据集
#从torchvision中的datasets中将Fashion-MNIST数据集拿到;root是目录;train=True表示下载的是训练数据集;download=True表示确定从网上下载;
mnist_train = torchvision.datasets.FashionMNIST(root='./Datasets',train=True, download=False,transform=transforms.ToTensor())# 测试数据集
mnist_test = torchvision.datasets.FashionMNIST(root='./Datasets',train=False, download=False,transform=transforms.ToTensor())
# 上⾯的 mnist_train 和 mnist_test 都是 torch.utils.data.Dataset 的⼦类,所以我们可以⽤ len() 来获取该数据集的⼤⼩,还可以⽤下标来获取具体的⼀个样本。
print(type(mnist_train))
print(len(mnist_train), len(mnist_test))# 我们可以通过下标来访问任意一个样本
feature, label = mnist_train[0]
print(feature.shape, label)
# 变量feature对应的高和宽均为28像素的图像,输出显示的第一维是通道数,因为数据集是灰度图像,所以通道数为1,后面两维分别是图像的宽和高。

<class ‘torchvision.datasets.mnist.FashionMNIST’>
60000 10000
torch.Size([1, 28, 28]) 9

输出训练集中的10个样本的图像内容和文本标签

"""
Fashion-MNIST中⼀共包括了10个类别,分别为t-shirt(T恤)、trouser(裤⼦)、pullover(套衫)、
dress(连⾐裙)、coat(外套)、sandal(凉鞋)、shirt(衬衫)、sneaker(运动鞋)、
bag(包)和ankle boot(短靴)。以下函数可以将数值标签转成相应的⽂本标签。
"""
def get_fashion_mnist_labels(labels):text_lables = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat','sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']return [text_lables[int(i)] for i in labels]
#定义绘图函数
def use_svg_display():# 用矢量图显示display.set_matplotlib_formats('svg')def set_figsize(figsize=(3.5, 2.5)):use_svg_display()# 设置图的尺寸plt.rcParams['figure.figsize'] = figsize
# 下⾯定义⼀个可以在⼀⾏⾥画出多张图像和对应标签的函数。
def show_fashion_mnist(images, labels):use_svg_display()# 这⾥的_表示我们忽略(不使⽤)的变量_, figs = plt.subplots(1, len(images), figsize=(12, 12))for f, img, lbl in zip(figs, images, labels):f.imshow(img.view((28, 28)).numpy())f.set_title(lbl)f.axes.get_xaxis().set_visible(False)f.axes.get_yaxis().set_visible(False)plt.show()# 输出训练集中的10个样本的图像内容和文本标签
X, y = [], []
for i in range(10):X.append(mnist_train[i][0])y.append(mnist_train[i][1])
show_fashion_mnist(X, get_fashion_mnist_labels(y))

在这里插入图片描述

读取小批量

#num_work来设置4个进程读取数据
batch_size=256
if sys.platform.startswith('win'):num_workers=0 #0表示不用额外的进程来加速读取数据
else:num_workers=4
train_iter=torch.utils.data.DataLoader(mnist_train,batch_size=batch_size,shuffle=True,num_workers=num_workers)
test_iter=torch.utils.data.DataLoader(mnist_test,batch_size=batch_size,shuffle=True,#随机num_workers=num_workers) #短进程
#最后查看读取一遍训练数据需要的时间
start=time.time()
for X,y in train_iter:continue
print('%.2f sec'% (time.time()- start))

http://www.ppmy.cn/news/139502.html

相关文章

万方 protobuf 反序列化

protobuf 是一种轻便高效的结构化数据存储格式&#xff0c;可以用于结构化数据串行化&#xff0c;或者说序列化。 在网络传输方面&#xff0c;相比传统的json&#xff0c;有着更快、更小&#xff0c;且加密性好的特点。 在实际应用中&#xff0c;万方数据库官网发送的请求&…

如何使用宝塔面板搭建网站(搭建宝塔页面)

书接上回&#xff0c;咱们已经搭建好咱们的Linux服务器&#xff0c;接下来改是搭建宝塔页面的教程了。 这里我们需要一个域名&#xff0c;自行去各家云服务器购买域名&#xff08;例如&#xff1a;腾讯云&#xff0c;阿里云&#xff0c;华为云等等&#xff09; 购买一个域名之…

我的世界模组开发(0)MDK安装详解

万事开头难&#xff0c;开了头仍很难 就在暑假末&#xff0c;我的MDK坏了&#xff0c;不过&#xff0c;在我的力挽狂澜之下&#xff0c;MDK又被修好了 在修的时候&#xff0c;我放弃了Forge官方的MDK&#xff0c;因为有一个叫做client1.12.2.pom文件被墙了。。。。 无奈之下…

STM32CubeMX系列07——IIC通信(AT24C02、OLED屏幕)

文章目录 1. 准备工作1.1. 所用硬件1.2. IIC简介1.2. 生成工程1.2.1. 创建工程选择主控1.2.2. 系统配置1.2.3. 配置工程目录1.2.4. IIC配置 2. 读写EEPROM实验&#xff08;AT24C02&#xff09;2.1. AT24C02简介2.1.1. AT24C02原理图2.1.2. 设备地址 2.2. 读写时序2.3. 代码实现…

华为 Mate40 手机

2020年10月22日&#xff0c;华为宣布推出2020年全新旗舰手机华为Mate40系列&#xff0c;华为Mate40系列实现强悍性能、全能影像和创新交互的空前突破&#xff0c;让人们对全场景智慧生活未来的构想更进一步。 华为Mate40 Pro和华为Mate40 Pro搭载华为首款5纳米麒麟9000 SoC芯片…

物料主数据的MRP视图详解

MRP组 MRP组是针对控制MRP运行参数的设置为一个组。MRP运行时考虑的参数可以是工厂级&#xff0c;也可以设置在MRP组级别。 ABC标识 根据消耗值&#xff0c;按物料ABC进行标识分类。A-重要部分&#xff0c;高消耗值 B-次重要&#xff0c;中等消耗 C-不重要。低消耗。MC40 和…

Cortex-M4架构

本文参考资料来自《ARM Cortex-M3与Cortex-M4 权威指南》 Cortex-M4 处理器基于ARMv7-M架构&#xff0c;发布时&#xff0c;架构中又额外增加了新的指令和特性&#xff0c;改进后的架构也被称为ARMv7E-M 编程模型 操作模式和状态 操作状态&#xff1a; - 调试状态&#xf…

MCMC

背景 给定一个的概率分布 p(x) , 我们希望产生服从该分布的样本。前面介绍过一些随机采样算法&#xff08;如拒绝采样、重要性采样&#xff09;可以产生服从特定分布的样本&#xff0c;但是这些采样算法存在一些缺陷&#xff08;如难以选取合适的建议分布&#xff0c;只适合一…