深度学习(PyTorch)——Dataset&DataLoader 加载数据集

B站up主“刘二大人”视频 笔记

说在前面:
本节内容,主要是把数据集写成了一个类,这个类要继承Dataset类,有点像DIY一个数据集的感觉,只有自定义了之后,才能实例化,然后把之前直接在文件夹中读取数据的方式进行了修改;

后面加载数据的DataLoader(注意L大写),直接可以调用对数据集类做了实例化的对象,即把他当做一个参数,传入DataLoader当中;

详细过程:
本课程的主要任务是通过将原本简单的标量输入,升级为向量输入,构建线性传播模型:
在导入数据阶段就有很大不同:
数据集类里面有三个函数,这三个函数较为固定,分别自己的作用;
继承Dataset后我们必须实现三个函数:
__init__()是初始化函数,之后只要提供数据集路径,就可以进行数据的加载,也就是说,传入init的参数,只要有一个文件路径就可以了;
getitem__()通过索引找到某个样本;
__len__()返回数据集大小;

程序如下:

import torch
import numpy as np
from torch.utils.data import Dataset  # s数据工具提供了2个类,一个是Dataset,另一个是DataLoader
from torch.utils.data import DataLoader  # 可以帮助我们加载数据
# Dataset是抽象类,不能实例化,只能被继承。DataLoader可以实例化


class DiabetesDataset(Dataset):  # 继承Dataset
    def __init__(self, filepath):
        xy = np.loadtxt(filepath, delimiter=',', dtype=np.float32)
        self.len = xy.shape[0]  # xy是一个n*9的矩阵,xy.shape=(N,9)的元组,xy.shape[0]=N
        self.x_data = torch.from_numpy(xy[:, :-1])  # 所有行,从第一列开始,最后一列不要 xdata与ydata的结果均为tensor
        self.y_data = torch.from_numpy(xy[:, [-1]])  # 所有行,只要最后一列,-1加了中括号是为了拿出的数据是矩阵

    def __getitem__(self, index):  # 可以支持下标索引寻找数据
        return self.x_data[index], self.y_data[index]

    def __len__(self):  # 返回数据集条数
        return self.len


dataset = DiabetesDataset('diabetes.csv.gz')
train_loader = DataLoader(
    dataset=dataset,  # 传递数据集
    batch_size=32,  # 容量是多少
    shuffle=True,  # 是否打乱
    num_workers=2)  # 进程为2,是否并行


class Model(torch.nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear1 = torch.nn.Linear(8, 6)
        self.linear2 = torch.nn.Linear(6, 4)
        self.linear3 = torch.nn.Linear(4, 1)
        self.sigmoid = torch.nn.Sigmoid()  # 给模型添加一个非线性变换
        '''self.activate = torch.nn.ReLU()'''

    def forward(self, x):
        x = self.sigmoid(self.linear1(x))
        x = self.sigmoid(self.linear2(x))
        x = self.sigmoid(self.linear3(x))
        return x


model = Model()

criterion = torch.nn.BCELoss(size_average=True)  # 构造损失函数
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  # 构造优化器 lr为学习率

if __name__ == '__main__':
    for epoch in range(1000):
        for batch_idx, data in enumerate(train_loader, 0):  # enumerate获得当前迭代的次数
            # for batch_idx, (inputs, labels) in enumerate(train_loader, 0):  # enumerate获得当前迭代的次数

            # 1.数据的准备
            inputs, labels = data  # 从data里面拿出x和y,他们都是tensor
            # 2.前馈
            y_pre = model(inputs)  # 在前馈算y_hat
            loss = criterion(y_pre, labels)  # 计算损失
            print(epoch, batch_idx, loss.item())
            # 3.反馈
            optimizer.zero_grad()  # 把所有权重的梯度归零
            loss.backward()  # 反馈
            # 4.更新
            optimizer.step()  # 更新

运行结果如下:

视频截图如下: 

 epoch:当所有的训练本都进行了一次前馈和反馈,即完成一次epoch

 dataset是抽象类不能实例化,只能被其他类继承;dataloader可以实例化

 

 

 

 

 

 

 

epoch=100表示把所有数据都跑100遍 

 

 

墨影清泉
关注 关注
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch 解决DatasetDataloader遇到的问题
09-18
今天小编就为大家分享一篇PyTorch 解决DatasetDataloader遇到的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Video-Dataset-Loading-Pytorch:用于加载,预处理和增强视频数据集的通用PyTorch数据集实现
05-05
如果您完全不熟悉使用torch.utils.data.Dataset和torch.utils.data.DataLoaderPyTorch加载数据集,建议您首先通过或来熟悉它们。 概述:本示例演示VideoFrameDataset的用法 VideoFrameDataset类( torch.utils....
pytorch中的DatasetDataLoader
clc的博客
09-26 468
pytorch中的DatasetDataLoader
PyTorch基础之数据模块DatasetDataLoader用法详解(附源码)
showswoller的博客
04-29 6024
PyTorch基础之数据模块DatasetDataLoader用法详解(附源码)
PytorchDataset类和DataLoader
最新发布
m0_63997099的博客
04-24 1028
Dataset是一个抽象类,用于表示一个数据集的全部内容。在 PyTorch 中,任何继承自的自定义数据集需要实现两个必须这个方法应该返回一个索引处的数据点和其对应的标签。例如,在图像数据集中,这可能是一对(图像,标签)。这个方法返回数据集中的数据点的总数,即数据集的大小。DataLoader是一个迭代器,用于将Dataset封装成易于访问的数据流,支持批量加载和多进程数据加载等操作。通过组合使用DatasetDataLoaderPyTorch 用户可以高效、灵活地处理大规模数据集Dataset
[Pytorch]DataSetDataLoader逐句详解
就随便写写....
03-05 1385
DataSetDataLoader逐句详解
torchvision.datasets.ImageFolde()函数与torch.utils.data.DataLoader()函数详解与测试
qq_41226186的博客
05-08 1132
本文详细介绍了torchvision.datasets.ImageFolde()函数与torch.utils.data.DataLoader()函数两个函数的用法
Pytorch: 使用DatasetDataLoader读取本地csv文件
热门推荐
weixin_35338624的博客
07-25 1万+
import numpy as np import pandas as pd from PIL import Image from torch import optim,nn import torch.nn.functional as F from torchvision import transforms from torch.utils.data.dataset import Dataset...
使用pytorch加载数据集和对数据集进行处理
Keep_Trying_Go的博客
12-30 920
使用pytorch加载数据集和对数据集进行处理
实例讲解DatasetDataLoader的 zoro数据集
01-22
pytorch】(二)实例讲解DatasetDataLoader 用到的数据
pytorch数据读取DataloaderDataset
01-06
数据读取–>dataloader–>sampler(index生成索引,样本序号),dataset(根据索引读取img,label) 数据预处理–>transforms DataLoader DataLoaderPytorch中用来处理模型输入数据的一个工具类。通过使用...
PyTorch实现重写/改写Dataset并载入Dataloader
09-16
主要介绍了PyTorch实现重写/改写Dataset并载入Dataloader,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
pytorch加载语音类自定义数据集的方法教程
01-19
 pytorch对一下常用的公开数据集有很方便的API接口,但是当我们需要使用自己的数据集训练神经网络时,就需要自定义数据集,在pytorch中,提供了一些类,方便我们定义自己的数据集合 torch.utils.data.Dataset:...
PyTorch学习笔记(4)DataloaderDataset(1)
01-06
torch.utils.data.DataLoader dataset Dataset类 决定数据从哪读取及如何读取 batchsize 批大小 num_works 是否多进程读取数据 shuffle 每个epoch 是否乱序 drop_last 当样本数不能被batchsize整除时,是否舍弃最后...
一文弄懂PytorchDataLoader, DataSet, Sampler之间的关系
09-16
主要介绍了一文弄懂PytorchDataLoader, DataSet, Sampler之间的关系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
PytorchDataset数据类型定义和使用例子
03-21
该博客实现基于PytorchDataset类型定义的数据,实现基于Pytorch的数据类型的使用,包括batchsize的数据集使用,以及Dataloader,iter和next的使用,适合入门学习。
pytorch学习(二)——DatasetDataLoader
ifhuke的博客
10-22 1129
pytorchDatasetDataLoaderPython的迭代器和生成器
PytorchDataset类和DataLoader、tensorboard
Nirvana_xian的博客
08-02 492
Dataset本质上就是一个抽象类,可以把数据封装成Python可以识别的数据结构。Dataset类不能实例化,所以在使用Dataset的时候,我们需要定义自己的数据集类,也是Dataset的子类,来继承Dataset类的属性和方法。Dataset可作为DataLoader的参数传入DataLoader,实现基于张量的数据预处理DatasetDataLoader都是用来帮助我们加载数据集的两个重要工具类:Dataset用来构造支持索引的数据集
深度学习Pytorch 教程(十四):PyTorch数据结构:6、数据集Dataset)与数据加载器(DataLoader):自定义鸢尾花数据类
天地玄黄 魑魅魍魉 风花雪月 商角徵羽 暂时停更 十月重见
02-28 1266
本文介绍了PyTorch数据集Dataset)与数据加载器(DataLoader),并实现自定义鸢尾花数据类
如何利用PyTorchDatasetDataloader模块构建适用于EEGNet的数据集
04-20
如果您想利用PyTorchDatasetDataloader模块构建适用于EEGNet的数据集,可以考虑以下步骤: 1. 根据EEGNet的输入要求,将原始数据转换为适当维度的张量,例如将每个信号段调整为 n_channels x n_samples 的形状...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 窗函数的介绍以及画出常见窗函数(汉宁窗,矩形窗,汉明窗,布莱克曼窗)的时域图和频谱图 43189
  • 基本的信号——Sa函数(抽样信号) 32037
  • 现代信号处理——自适应滤波器(LMS自适应滤波器) 18237
  • 基本的信号——矩阵脉冲信号(门函数) 16641
  • 信号处理中简单实用的方法——提取信号中的包络 15755

最新评论

  • 白噪声,有色噪声的定义、特性及其MATLAB仿真

    dede_wu: 您好,请问下for循环里面的系数是怎么算的啊

  • 窗函数的介绍以及画出常见窗函数(汉宁窗,矩形窗,汉明窗,布莱克曼窗)的时域图和频谱图

    hpy3343959482: 条理清晰

  • 现代信号处理——自适应滤波器(离散维纳滤波器)

    book_bbyuan: 写的不够通俗

  • 现代信号处理——自适应滤波器(离散维纳滤波器)

    Wyan--: 比如从升余弦滤波器上采到的数值所组成的,是一个对称且中心为1的序列

  • 现代信号处理——自适应滤波器(离散维纳滤波器)

    墨影清泉: 具体是什么序列呢

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 基于wRLS滤波器和神经网络回声残留抑制的AEC模型——论文翻译
  • 利用深度复数神经网络、非线性幅度压缩和相位信息的声学回声消除_2021
  • 基于wRLS滤波器和神经网络回声残留抑制的AEC模型——FSMN神经网络介绍
2024年6篇
2023年54篇
2022年148篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司娄底营销网站同乐模板制作多少钱嘉兴网站开发公司营口网站推广系统价格黄南营销型网站建设哪家好南宁网站优化排名上海网站优化价格枣庄网络推广推荐宝鸡推广网站公司松岗百度竞价包年推广推荐西安网站推广系统多少钱长葛网站建设公司武威SEO按天计费价格和县外贸网站设计多少钱文山设计网站公司鹤壁高端网站设计价格阿里网站改版公司安康网站设计洛阳百度关键词包年推广三明模板网站建设公司大浪百度竞价推荐鹰潭设计公司网站多少钱泰安网页设计价格爱联网站搜索优化多少钱温州外贸网站制作价格盘锦网站改版价格木棉湾企业网站改版公司新余百度爱采购推荐乌海网站关键词优化公司黔西南外贸网站制作报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化