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

news2024/11/28 12:51:55

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/620437.html

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

相关文章

javascript基础三十:JavaScript如何实现上拉加载,下拉刷新?

一、前言 下拉刷新和上拉加载这两种交互方式通常出现在移动端中 本质上等同于PC网页中的分页&#xff0c;只是交互形式不同 开源社区也有很多优秀的解决方案&#xff0c;如iscroll、better-scroll、pulltorefresh.js库等等 这些第三方库使用起来非常便捷 我们通过原生的方…

哈工大 大数据 数据库实验(3) 物理数据库设计--索引结构

指导书: HIT邹老师数据库实验三资源-CSDN文库 导入数据库 操作 两个元组的分布规律 1.查询元组的数据分布 SELECT COUNT(*) FROM Foo; SELECT COUNT(*) FROM Foo WHERE id 0; SELECT COUNT(*) FROM Foo WHERE a 0; SELECT COUNT(*) FROM Foo WHERE b 0; SELECT COUNT(*…

c++ 解析html与htmlcxx库

目录 1&#xff0c;htmlcxx Github 版本源码下载 2&#xff0c;htmlcxx Linux 版本源码下载 3&#xff0c;htmlcxx 解析例子 1&#xff0c;htmlcxx Github 版本源码下载 正如在前一篇文章 c CFile 类 里提到的&#xff0c;我想要从指定的 html 文件里提取…

【裸机开发】镜像文件内部信息构成

由于当前使用的是裸板&#xff0c;没有OS&#xff0c;DDR的初始化、文件保存地址都尚未确定&#xff0c;所以我们生成二进制文件以后&#xff0c;是无法直接放到开发板上运行的。 因此&#xff0c;我们一般会在二进制文件之前加一些头部信息&#xff0c;这些头部信息会告诉开发…

xsync集群分发脚本

脚本&#xff1a; #!/bin/bash #1. 判断参数个数 if [ $# -lt 1 ] thenecho Not Enough Arguement!exit; fi #2. 遍历集群所有机器 for host in hadoop02 hadoop03 doecho $host #3. 遍历所有目录&#xff0c;挨个发送for file in $do#4. 判断文件是否存在if [ -e $file ]th…

文本三剑客awk:命令讲解

awk-命令讲解&#xff1a; 一、awk&#xff1a; 1.定义&#xff1a; &#xff08;1&#xff09;在 Linux/UNIX 系统中&#xff0c;awk 是一个功能强大的编辑工具&#xff0c;逐行读取输入文本&#xff0c;默认以空格或tab键作为分隔符作为分隔。并按模式或者条件执行编辑命令…

006-从零搭建微服务-注册中心(二)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff1a;https://gitee.com/csps/mingyue 文档地址&#xff1a;https://gitee.com/csps/mingyue/wikis 核心依赖 需要注册配置中心的服务引入下面 …

步进电机基本原理及驱动方式详解

步进电机基本原理及驱动方式详解 步进电机相关概念基本原理类型和结构转子结构定子结构 励磁方式ATD9800 驱动使用实例 参考文献 步进电机相关概念 步进电机是一种常用于控制和定位应用的电动机&#xff0c;其独特的工作方式使其在许多领域中都具有广泛的应用。步进电机以其 精…

正态总体下常见的抽样分布

1.正态总体下常见的抽样分布 本人博客&#xff1a;总体分布、样本分布、抽样分布的区别 本人博客&#xff1a;三大抽样分布 正态总体下常见的抽样分布意思是&#xff1a;样本来自服从正态分布的总体中&#xff0c;从样本中抽样后得到的分布 1.1 单个正态总体下的抽样分布&…

【高危】GitLab CE/EE 存在存储型XSS漏洞

漏洞描述 GitLab 是一款基于Git的代码托管、版本控制、协作开发平台。 在 GitLab CE/EE 15.11 至 15.11.6 版本以及 16.0 至 16.0.1 版本中&#xff0c;当GitLab导入GitHub仓库时&#xff0c;如果GitHub仓库中包含由用户构造的恶意JavaScript代码的标签颜色&#xff0c;解析这…

为什么说程序员和产品经理一定要学一学PMP

要回答为什么说程序员和产品经理一定要学一学PMP&#xff1f;我们得先看一下PMP包含的学习内容。PMP新版考纲备考参考资料绝大多数涉及IT项目的敏捷管理理念。主要来源于PMI推荐的10本参考书&#xff1a; 《敏捷实践指南&#xff08;Agile Practice Guide&#xff09;》 《项目…

Java匿名内部类、invoke方法、动态代理

一、匿名内部类 匿名内部类一般作为方法的参数&#xff0c;这个方法的形参为接口&#xff0c;而实参为匿名内部类&#xff08;可以理解为接口的对象&#xff09;并且重写了接口中的方法。 例如&#xff1a; 定义了一个接口Star&#xff1a; 类型为Star的引用数据类型作为方法s…

关于docker中Nacos启动成功访问不了的情况

书接上回&#xff0c;这段时间在忙学成在线的微服务项目&#xff0c;上次出现了IP修改的问题&#xff0c;有了一定的解决方案&#xff0c;复制别人的虚拟机后如何修改IP_SSSEdward的博客-CSDN博客。 这次docker正常启动了&#xff0c;但是出现了访问不了的情况&#xff0c;但是…

短视频矩阵系统源码打包附赠分享

矩阵系统源码主要有三种框架&#xff1a;Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架&#xff0c;提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框架&#xff0c;用于将数据模型、Web应用程序的用户界面和控制器逻…

【备战秋招】Java异常处理

Java程序在执行过程中所发生的异常事件可分为两类&#xff1a; Error&#xff1a;Java虚拟机无法解决的严重问题。如&#xff1a;JVM系统内部错误、资源 耗尽等严重情况。 比如&#xff1a;StackOverflowError和OOM。一般不编写针对性的代码进行处理。 Exception: 其它因编程错…

使用pytorch进行FFT和STFT

首先&#xff0c;我们定义一个波形&#xff0c;幅值分别为20和38&#xff0c;频率为2和13&#xff1a; y 20 sin ⁡ ( 2 π 2 x ) 38 sin ⁡ ( 2 π 13 x ) y20 \sin (2\pi \times 2x)38\sin (2\pi \times 13x) y20sin(2π2x)38sin(2π13x) 采样频率为200Hz&#xff0c;采…

十四届蓝桥杯省赛CB

hinhin可否不要老&#xff0c;令创新高 A 日期统计B 01 串的熵C 冶炼金属D: 飞机降落E: 接龙数列F: 岛屿个数G: 子串简写H: 整数删除I: 景区导游J: 砍树 A 日期统计 #include <bits/stdc.h> using namespace std; #define int long long int #define pii pair<int,int…

VR云探校:解锁不一样的视角,“沉浸式”打卡校园

仲夏六月&#xff0c;又是一年高考时&#xff0c; 高考首战已经正式拉开帷幕&#xff0c; 超千万考生赴考&#xff0c;更有千万考生家长花式赴考。 少年的你披星戴月走过的路&#xff0c;终将会繁华遍地&#xff0c;今天VR全景就为千万考生和家长解锁不一样的视角&#xff0…

java观察者模式例子

观察者模式&#xff1a; 是一种常用的设计模式&#xff0c;它定义了一种一对多的关系&#xff0c;让多个观察者对象同时监听某一个主题对象&#xff0c;当主题对象状态发生变化时&#xff0c;它的所有观察者都会收到通知并且自动更新。 在观察者模式中&#xff0c;主题对象通…

Minicap编译及简单使用

什么是MiniCap 官方说法&#xff1a;Minicap提供了一个套接字接口&#xff0c;用于从Android设备流式传输实时屏幕捕获数据。它旨在用作更大程序中的组件&#xff0c;因此仅凭其本身并不是非常有用。例如&#xff0c;它在STF中用于远程控制。 个人理解&#xff1a;Minicap是用…