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

news2024/11/24 12:42:21

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 preprocessing

features = 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 = 0

for 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.coloradmin.cn/o/596754.html

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

相关文章

国自然发文:这种行为将永久取消基金申请资格

函评阶段这些行为被基金委禁止 国家自然科学基金委重拳出击打击"打招呼"现象,出台《国家自然科学基金项目评审请托行为禁止清单》&#xff0c;禁止科研人员、依托单位、评审专家和基金委工作人员24种违规行为。 主要内容如下: 一、科研人员禁止清单(7项) 主要包括…

初阶数据结构——二叉树

目录 树的概念及结构树的概念树的相关概念树的表示树在实际中的运用 二叉树概念及结构特殊的二叉树二叉树的性质二叉树的存储结构 二叉树的顺序结构及实现二叉树的顺序结构堆的概念及结构堆的实现堆的结构&#xff1a;初始化堆&#xff1a;销毁堆&#xff1a;插入数据&#xff…

通过maven配置不同的开发环境

前言 项目有开发、测试、生产至少有这三个环境&#xff0c; 所需要的配置信息肯定不一样&#xff0c; 比如需要开发环境的时候&#xff0c;注解掉测试和生产的配置信息&#xff0c;打开开发的配置信息。 后来工作接触到新项目&#xff0c;发现是通过maven来控制加载不同的配置…

第55讲:Python函数形参、实参的语法格式汇总以及应用小案例

文章目录 1.Python函数中各种参数的汇总1.1.常规参数1.2.参数设置默认值1.3.强制传参时使用关键字传参1.4.个数可变的形参1.5.将序列中的每个元素都转换为位置实参1.6.将字典中的每个元素都转换为关键字实参 2.小案例练习Python中的各种函数参数2.1.案例一2.2.案例二 1.Python函…

React-reacte-app项目实现antD按需加载(2023)

出现的问题&#xff1a; 项目打包后&#xff0c;由于引入了antD&#xff0c;所以打包后的mani.js体积会非常大。相当于引入了全部的antD的代码。所以可以做一个优化&#xff1a;通过script标签引入antD&#xff0c;将其挂载在window上。使用antD组件的使用&#xff0c;直接从w…

2.矢量分析

目录 一.标量函数和矢量函数 二.矢端曲线 三.矢量函数导数和微分 1.导数 2.导数的几何意义 3.微分 4.矢量导数性质 5.例题 四.矢量导数的应用 1.几何应用 1.曲线的切线和法平面 2.曲面的法线和法平面 2.物理应用 3.两大典型问题 五.矢量函数的积分 如果第一章我…

WOT全球技术创新大会开幕倒计时——好内容才是永远的底气

距离6月16日-17日召开的WOT全球技术创新大会还有半个月时间&#xff0c;所有讲师、议题均已就位。本届WOT不仅囊括2023年最火的技术——AIGC、大模型、大算力&#xff0c;也有被技术人永恒关注的热点话题——多云实践、业务架构演进、效能提升。 筹备数月之久&#xff0c;50来…

Intel® 以太网800 系列网络适配器 – DPDK上的性能演进

1. 介绍 Intel以太网800系列网络适配器提供卓越的性能&#xff0c;以满足各种工作负载的要求。800系列提供了数据包分类和排序优化、硬件增强的定时能力以及完全可编程的流水线。Intel的以太网产品组合始终提供可靠的体验和经过验证的互操作性。 在DPDK中&#xff0c;ICE轮询模…

CDN控制平台操作指引之账号注册及添加域名

一、注册账户及登录 &#xff08;一&#xff09;请确认您已经注册了火伞云账号并完成账号实名认证。如果未注册&#xff0c;请先完成账号注册和实名认证。 &#xff08;二&#xff09;登录火伞云融合CDN管理平台。 二、添加加速域名 使用火伞云融合CDN加速指定网站&#xff…

NodeJs之Ajax技术

1. 初识Ajax ./public/Ajax.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&qu…

ArcGIS Pro地图和场景

目录 1 地图和场景 1.1 地图 1.2 场景 2 图层 2.1 图层类型 2.1.1 要素图层&#xff08;Feature layers&#xff09; 2.1.2 栅格图层&#xff08;Raster layers&#xff09; 2.1.3 场景图层&#xff08;Scene layers&#xff09; 2.1.4 服务图层&#xff08;Service la…

机器视觉怎么对陶瓷板的外观尺寸进行自动检测?

随着工业自动化的不断发展&#xff0c;机器视觉技术在制造业中的应用越来越广泛。在陶瓷板行业中&#xff0c;机器视觉技术可以用于自动检测陶瓷板的外观尺寸&#xff0c;提高生产效率和产品质量。下面我们来介绍机器视觉如何对陶瓷板的外观尺寸进行自动检测。 一、检测原理 …

第2关:socket编程

第2关&#xff1a;socket编程 任务描述相关知识1、Socket2、socket函数3、bind函数4、listen、connetct函数5、accept函数6、read、write函数7、close、shutdown函数8、三次握手9、数据传输10、四次挥手 编程要求及注意事项测试说明参考代码 任务描述 本关任务&#xff1a; 编…

轻松掌握,板对板连接器选型指南

一、什么是板对板连接器&#xff1f; 板对板连接器(简称BTB)&#xff0c;是精密电路中电源和信号耦合连接必不可少的器件。随着产品复杂度和电路设计规模的不断提升&#xff0c;板对板连接器也沿着市场需求向着高速率&#xff0c;高功率密度&#xff0c;轻薄化几个方向发展。 …

chatgpt赋能python:为什么Python不适合做SEO?——解析

为什么Python不适合做SEO&#xff1f;——解析 Python作为一种非常方便的编程语言&#xff0c;在数据处理、人工智能等方面有着广泛的应用。然而&#xff0c;在SEO领域&#xff0c;Python似乎并不受欢迎。本文将从Python不适用于SEO的几个方面做出详细的介绍&#xff0c;并为读…

WPF .Net6中使用Prism

.NET 6 是微软长期支持&#xff0c;并在移动、桌面、IoT 和云应用之间统一了 SDK、基础库和运行时。 Prism为程序设计提供指导,旨在帮助用户更加容易的设计和构建丰富、灵活、易于维护WPF桌面应用程序。Prism使用设计模式&#xff08;如MVVM,复合视图,事件聚合器&#xff09;…

02 【el和data的两种写法 MVVM模型】

02 【el和data的两种写法 MVVM模型】 1.el和data的两种写法 el有2种写法 创建Vue实例对象的时候配置el属性 先创建Vue实例&#xff0c;随后再通过vm.$mount(‘#root’)指定el的值 data有2种写法 对象式&#xff1a;data&#xff1a; { }函数式&#xff1a;data() { retur…

国产给力啊啊啊----国产MCU-CW32F030开发学习

国产MCU-CW32F030开发学习 1. 相关资料下载 1.1 武汉芯源半导体 武汉芯源半导体官网 武汉芯源半导体 武汉芯源 21ic 电子论坛 21ic 电子论坛 1.2 CW32F030系列资料 CW32F030技术文档 • 内核&#xff1a;ARM Cortex-M0 – 最高主频64MHz • 工作温度&#xff1a;-40℃ 至…

Java Number Math character类

文章目录 一、Java Number& Math 类1、Java Math 类2、Number & Math 类方法3、Math 的 floor,round 和 ceil 方法实例比较 二、Java Character 类1、转义序列2、character 方法 总结 一、Java Number& Math 类 一般地&#xff0c;当需要使用数字的时候&#xff0…

掌握海外新闻发布技巧,媒介易助你在全球获得曝光

​海外新闻稿发布平台是企业在拓展海外市场、增加品牌曝光度和提升知名度方面非常重要的工具。本文将介绍海外新闻稿发布平台的作用和建议&#xff0c;并提供一些建议&#xff0c;帮助企业更好地利用海外新闻稿发布平台进行营销推广。 一、海外新闻稿发布平台的作用 海外新闻稿…