看完不会你揍我!!Pytorch利用文本数据建立自己的数据集- Dataset Dataloader详解 附案例

train_loader=DataLoader(dataset=Mydata,batch_size=20,shuffle=True,num_workers=0)

Dataset、Dataloader 简介

Dataset是Pytorch自带的建立自己数据库的一个类,可通过其建立自己的数据库。

Dataloader是Pytorch自带加载自己数据库的一个工具,可通过其加载自建数据库中的数据。

看完这个简介你应该对Dataset、Dateloader有一个基本的了解,下面我们就来谈一谈代码的实现问题。

导入相关的的库

import torch
import torch.nn as nn
from torch.utils.data import DataLoader,Dataset
import numpy as np
import xlrd

Dataset、Dateloader代码实现及详解

对于Dataset,作者是通过定义一个新类别来实现,这个类别主要实现的是三个功能:

1、从Excal(txt)文件中提取所有数据

def __init__(self,filepath):

从Excal中具体实现过程可以借鉴我的前一篇文章

python自动化办公-提取excal表格某列数据

从txt中提取数据则是利用np.loadtxt(filepath,delimiter,dtype)实现

参数详解:

filepath = 文件所在路径

delimiter = 数据间的分隔符

dtype = 将文本中的数据转换成需要的类型

2、创建每一组数据的索引

def __getitem__(self, index):

3、返回所创建数据库的长度

def __len__(self):

建立好这三个功能,一个可以实现加载、索引、确定长度的数据库的新类就建立完成,我们的工作也向前走了一大步。

 下面看看从Excal(txt)中提取数据的代码实现:

class Mydataset(Dataset):
    def __init__(self,filepath):
        datalist=[]
        data = xlrd.open_workbook(filepath, encoding_override='utf-8')
        table = data.sheets()[0]  # 选定表sheet1 或sheet2  0表示sheet1 1表示sheet2
        nrows = table.nrows  # 获取行号
        ncols = table.ncols  # 获取列号
        '''
         def __init__(self,filepath):
        xy = np.loadtxt(filepath,delimiter=' ',dtype=np.float)
        self.x_data = torch.from_numpy(data_scaler.fit_transform(datalist[:,:-1]))
        self.y_data = torch.from_numpy(xy[:,[-1]])
        '''
        for i in range(0, nrows):  # 第0行为表头
            alldata = table.row_values(i)  # 循环输出excel表中每一行,即所有数据
            datalist.append(alldata)  # 创建
        datalist = np.array(datalist,dtype=np.float32) #将获取的数据全部转换成数组浮点数
        self.len = datalist.shape[0]
        self.x_data = torch.from_numpy(data_scaler.fit_transform(datalist[:,:-1])) #将特征输入归一化
        self.y_data = torch.from_numpy(datalist[:,[-1]])
        print("数据已录入")
        
    def __getitem__(self, index):
        return self.x_data[index],self.y_data[index]
    def __len__(self):
        return self.len

 Dataloader 参数详解

train_loader=DataLoader(dataset=Mydata,batch_size=20,shuffle=True,num_workers=0)

Dataloader中的参数中比较有用的有四个:

dataset = 加载数据集

batch_size = 将所有数据进行打包分装(int)

shuffle = 是否随机打乱(True/None)

num_workers = 线程数(int)

过程图:

 以上就是本篇文章的全部内容了,下一篇文章将用一个简单的深层神经网络来实现。

创作不易,可不可以请您动动宝贵的手指给我顶个赞呢??

非常感谢,祝您有个愉快的一天!!

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值