PyTorch的数据处理

news2024/9/23 15:32:19


💥今天看一下 PyTorch数据通常的处理方法~

一般我们会将dataset用来封装自己的数据集,dataloader用于读取数据 

Dataset格式说明 

💬dataset定义了这个数据集的总长度,以及会返回哪些参数,模板:

from torch.utils.data import Dataset

class MyDataset(Dataset):
    def __init__(self, ):
        # 定义数据集包含的数据和标签

    def __len__(self):
        return len(...)
    def __getitem__(self, index):
        # 当数据集被读取时,返回一个包含数据和标签的元组
        return self.x_data[index], self.y_data[index]

DataLoader格式说明

my_dataset = DataLoader(mydataset, batch_size=2, shuffle=True,num_workers=4)
 # num_workers:多进程读取数据

导入两个列表到Dataset

class MyDataset(Dataset):
    def __init__(self, ):
        # 定义数据集包含的数据和标签
        self.x_data = [i for i in range(10)]
        self.y_data = [2*i for i in range(10)]

    def __len__(self):
        return len(self.x_data)
    def __getitem__(self, index):
        # 当数据集被读取时,返回一个包含数据和标签的元组
        return self.x_data[index], self.y_data[index]

mydataset = MyDataset()
my_dataset = DataLoader(mydataset)

for x_i ,y_i in my_dataset:
    print(x_i,y_i)

💬输出:

tensor([0]) tensor([0])
tensor([1]) tensor([2])
tensor([2]) tensor([4])
tensor([3]) tensor([6])
tensor([4]) tensor([8])
tensor([5]) tensor([10])
tensor([6]) tensor([12])
tensor([7]) tensor([14])
tensor([8]) tensor([16])
tensor([9]) tensor([18])

💬如果修改batch_size为2,则输出:

tensor([0, 1]) tensor([0, 2])
tensor([2, 3]) tensor([4, 6])
tensor([4, 5]) tensor([ 8, 10])
tensor([6, 7]) tensor([12, 14])
tensor([8, 9]) tensor([16, 18])
  • 我们可以看出,这是管理每次输出的批次的
  • 还可以控制用多少个线程来加速读取数据(Num Workers),这参数和电脑cpu核心数有关系,尽量不超过电脑的核心数

导入Excel数据到Dataset中

💥dataset只是一个类,因此数据可以从外部导入,我们也可以在dataset中规定数据在返回时进行更多的操作,数据在返回时也不一定是有两个。

pip install pandas
pip install openpyxl
class myDataset(Dataset):
    def __init__(self, data_loc):
        data = pd.read_ecl(data_loc)
        self.x1,self.x2,self.x3,self.x4,self.y = data['x1'],data['x2'],data['x3'] ,data['x4'],data['y']

    def __len__(self):
        return len(self.x1)

    def __getitem__(self, idx):
        return self.x1[idx],self.x2[idx],self.x3[idx],self.x4[idx],self.y[idx]

mydataset = myDataset(data_loc='e:\pythonProject Pytorch1\data.xls')
my_dataset = DataLoader(mydataset,batch_size=2)
for x1_i ,x2_i,x3_i,x4_i,y_i in my_dataset:
    print(x1_i,x2_i,x3_i,x4_i,y_i)

导入图像数据集到Dataset

需要安装opencv

pip install opencv-python

💯加载官方数据集 

有一些数据集是PyTorch自带的,它被保存在TorchVision中,以mnist数据集为例进行加载:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1701766.html

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

相关文章

element ui 的el-input输入一个字后失去焦点,需重新点击输入框才能再次输入!

解决方案: 我是form表单嵌套表格,里面的el-input输入框,输入第一个值的时候会突然失去焦点,需要再次点击输入框才能正常输入,原因是table的key值,需要改成正常的index即可,如果你是循环的&…

进化计算引领深度学习新纪元

《进化深度学习》介绍了进化计算(EC),并为你提供了一套实用的技术工具,你可以在整个深度学习过程中应用这些技术。本书提供了遗传算法和进化计算方法在网络拓扑、生成模型、强化学习等方面的应用。通过交互式的Colab notebook使你有机会在探索过程中进行…

day15

第一题 1419. 数青蛙 本题主要是采用模拟的解题思路,用一个croak来模拟青蛙的叫声,在一堆字符串中来找到几个croak,并判断这是由几个青蛙叫的; 首先我们使用数组来模拟hash表,其次我们使用hash表来映射青蛙叫的字符中…

smart-link + STP的vlan映射 + monitor-link实现二层链路的负载均衡+主备切换

一、适用场景 1、保护原有投资,不浪费原有网络设备及链路的投资; 2、对高可靠、高可用要求的业务,链路中的设备、接头、线路故障时,毫秒级切换,不影响业务的运行; 3、使用华为、华三智能管理型的交换设备&…

香橙派 AIpro评测

一. 香橙派AIpro开箱 官网外观: ​ ​ 外观实测:做工精致,散热片有精致的金属感 ​ ​ 反面:由于加装了wifi蓝牙模块,如果需要做外壳,需要注意保护天线贴片。在树莓派pi5的前面一版,增加了wifi…

MedSegDiff: Medical Image Segmentation with Diffusion Probabilistic Model 论文总结

题目:MedSegDiff: Medical Image Segmentation(图像分割)with Diffusion Probabilistic Model(扩散概率模型) 论文(MIDL会议):MedSegDiff: Medical Image Segmentation with Diffusi…

【数组】Leetcode 452. 用最少数量的箭引爆气球【中等】

用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地…

Linux C++ Socket 套接字、select、poll、epoll 实例

文章目录 1. 概述2. TCP 网络编程实例2.1 服务器端2.2 客户端2.3 运行截图 3. I/O 模型3.1 阻塞式I/O模型3.2 非阻塞I/O模型3.3 I/O 复用模型3.4 信号驱动式I/O3.5 异步I/O模型 4. I/O复用之 select4.1 select 函数描述4.2 服务端代码4.3 客户端代码4.4 运行截图 5. I/O复用之 …

虚拟海外仓用什么系统最好?5个步骤帮你选出适合自己仓库的WMS系统

面对国际市场越来越大的仓储需求,虚拟海外仓的受众还是非常广泛的。不过很多经营虚拟海外仓的企业往往都会陷入管理混乱,低效的怪圈。 要想突破这个经营的瓶颈,快速发展企业,选择一个适合自己的海外仓WMS系统是个不错的选择。 1…

Java中Stack的使用详解

Stack是一种运算受限的线性表,其特点在于仅允许在表的一端(即表尾)进行插入和删除操作。这一端被称为栈顶,而相对的另一端则称为栈底。向一个栈插入新元素的操作称为进栈或入栈,它将新元素放到栈顶元素的上面&#xff…

昂达固态硬盘数据恢复方法:全面解析与操作指南

在数字化时代,数据已经成为我们生活和工作中不可或缺的一部分。而固态硬盘(SSD)由于其读写速度快、抗震性强等优点,慢慢取代了传统的机械硬盘,成为我们存储数据的主要选择。然而,即便再先进的存储设备&…

如何远程访问Redis?

远程访问Redis是一种常见的需求,特别是在分布式系统或跨地域网络中。通过远程访问,我们可以轻松地对远程的Redis数据库进行操作和管理。 天联保障数据安全 对于远程访问Redis的安全性问题,我们可以借助天联来保障数据的安全。天联是一种基于…

Oracle-修改用户名

1、项目背景 需要将导入一份最新的用户数据在tbl用户上,但需要将原来的tbl用户数据保留并能实现两个用户的比对。 2、解决思路 思路一:1)新建用户tbl_feng,导入数据;2)将两个用户换名称 3)比对 思路二&…

STM32实现HAL库LED点灯

目录 一、相关环境 STM32CubeMX 介绍 安装下载 相关配置完善 尝试使用该软件,点亮LED灯 项目创建 代码示例 二、任务实现 1、使用HAL库方式完成LED灯的周期闪烁 要求1 项目创建 代码示例 要求2 项目创建 代码示例 2、使用仿真软件分析仪功能观察…

VS2022配合Qt与boost.asio实现一个TCP异步通信系统远程操作mysql数据库

上一篇博客我们通过boost.asio搭建了一个简单的异步服务器,但是那是基于命令行的,所有用起来还是相当枯燥的,这次我们配合Qt实现一个简陋的前端页面来控制后端mysql数据库中的表,实现添加密钥的功能(本次博客使用的boost版本是1.8…

为什么大部分新手做抖音小店赚不到钱?

大家好,我是喷火龙。 今天来给大家聊聊,为什么大部分新手做抖店赚不到钱? 不知道大家想过这个问题没有,可能有些人把赚不到钱的原因归结于市场、或者平台、又或者运营技术以及做店经验。 但我觉得这些都不是重点,重…

关于RAG(检索增强生成)的一些知识

写在前面 最近一直在看AI相关的文章,不出意外的话,后续几篇应该都是关于这方面的。希望能和大家一起了解这方面的技术。 什么是RAG 检索增强生成 (RAG,全称Retrieval-Augmented Generation) 是一种利用从外部来源获取的事实来提高生成式 AI 模型的准确…

视频监控管理平台LntonCVS安防监控平台实现接入监控视频资源的视频汇聚方案

随着各行业数字化转型的不断推进,视频监控技术在行业内的安防应用及管理支撑日益增多。然而,由于前期规划不清晰、管理不到位等问题,视频监管系统普遍存在以下问题: 1. 各部门单位在视频平台建设中以所属领域为单位,导…

Intellij IDEA创建springboot 3.2.5 项目

1、idea file -> new ->Project 点击 2、创建项目配置 完成配置-> 点击Next 3、选择对应jar 包 -> 点击Create 4、删除 .mvn、mvnw、mvnw.cmd

宝塔Nginx设置图片访问跨域

宝塔Nginx设置图片访问跨域 针对某一个站点设置 找到对应的站点点击 “设置” 增加对应header设置 代码: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${#允许跨域add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requeste…