8 加载数据集

news2025/1/11 1:51:01

文章目录

    • 前提知识了解
    • 数据集
    • Mini-Batch
      • 常用术语
    • DataLoader
      • 核心参数
      • 核心功能
    • 小tips
    • 课程代码实例

课程来源: 链接
课程文本部分来源(参考): 链接
以及(强烈推荐) Birandaの

前提知识了解

enumerate函数

数据集

包括DataSet以及DataLoader两部分,是用于加载的数据集包括数据和索引两部分,而DataLoader是用于引入数据集的Mini-Batch

Mini-Batch

均衡于算法的时间复杂度(加载全部数据训练更快)以及算法的准确度(加载单个数据训练更准)

在外层循环中,每一层是一个epoch(训练周期),在内层循环中,每一次是一个Mini-Batch(Batch的迭代)

for epoch in range(training_epochs):
    for i in range(total_batch):

常用术语

Epoch:所有的样本都进行了一次前馈计算和反向传播即为一次epoch

Batch-Size:每次训练的时候所使用的样本数量

Iterations:batch分的次数

DataLoader

核心参数

batch_size,shuffle(洗牌,用于打乱顺序)

核心功能

通过获得DataSet的索引以及数据集大小,来自动得生成小批量训练集

DataLoader先对数据集进行洗牌,再将数据集按照Batch_Size的长度划分为小的Batch,并按照Iterations进行加载,以方便通过循环对每个Batch进行操作。

在这里插入图片描述

小tips

注:在windows中利用多线程读取,需要将主程序(对数据操作的程序)封装到函数中

eg:

if __name__ =='__main__':
	for epoch in range(100):
		for i,data in enumerate(train_loader, 0):

以及如果既有测试数据又有训练数据,即二者需要分开
在这里插入图片描述

课程代码实例

在构造数据集时,两种对数据加载到内存中的处理方式如下:

  1. 加载所有数据到dataset,每次使用时读索引,适用于数据量小的情况
  2. 只对dataset进行初始化,仅存文件名到列表,每次使用时再通过索引到内存中去读取
import torch
import numpy as np
#DataSet是抽象类,无法实例化
from torch.utils.data import Dataset
#DataLoader可实例化
from torch.utils.data import DataLoader

class DiabetesDataset(Dataset):
    def __init__(self,filepath):
        xy = np.loadtxt(filepath, delimiter=',', dtype=np.float32)
        #获得数据集长度
        self.len=xy.shape[0]
        self.x_data = torch.from_numpy(xy[:, :-1])
        self.y_data = torch.from_numpy(xy[:, [-1]])
    #获得索引方法
    def __getitem__(self, index):
        return self.x_data[index], self.y_data[index]
    #获得数据集长度
    def __len__(self):
        return self.len

dataset = DiabetesDataset('diabetes.csv')
#num_workers表示多线程的读取
train_loader = DataLoader(dataset=dataset,batch_size=32,shuffle=True,num_workers=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()

    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.1)

if __name__ =='__main__':
    for epoch in range(100):
        #enumerate:可获得当前迭代的次数
        for i,data in enumerate(train_loader,0):
            #准备数据dataloader会将按batch_size返回的数据整合成矩阵加载
            inputs, labels = data
            #前馈
            y_pred = model(inputs)
            loss = criterion(y_pred, labels)
            print(epoch, i, loss.item())
            #反向传播
            optimizer.zero_grad()
            loss.backward()
            #更新
            optimizer.step()

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

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

相关文章

局域网中UTP连接,如何实现防止芯片损坏,防止信号产生各种误码,及实现CHIP之间的阻抗匹配

Hqst盈盛电子导读:局域网中UTP连接,如何实现防止芯片损坏,防止信号产生各种误码,及实现CHIP之间的阻抗匹配,浅谈网络滤波器作用一,在有线局域网中,计算机与服务器之间,计算机与路由器…

10、条件语句

目录 一、if语句的基本形式 1. if语句形式 2. if…else语句形式 3. else if语句形式 二、if的嵌套形式 三、条件运算符 四、switch语句 1. switch语句的基本形式 2. 多路开关模式的switch语句 一、if语句的基本形式 在if语句中,首先判断表达式的值&#x…

【BetterBench】2023年美赛辅导

通知 2023年美赛快开始啦,提醒大家比赛信息,比赛期间我会全称提供辅导,包括建模方案、实现代码! 可以参考往年所有建模比赛,本人开源的建模方案及实现代码 2020-2023年所有数学建模竞赛专栏 报名信息 1.辅助报名截止…

【异常】前端Babel提示 Support for the experimental syntax ‘jsx‘ isn‘t currently enabled

一、报错内容 17:33:41 - Building for production... 17:34:13 ERROR Failed to compile with 5 errors5:34:09 PM 17:34:13 17:34:13 error in ./src/layout/components/Sidebar/Item.vue?vue&typescript&langjs& 17:34:13 17:34:13 Syntax Error…

《流浪地球2》看不懂?根服务器、权威解析,专业科普来了

随着《流浪地球2》的上映,关于国产硬科幻电影的话题也火爆起来,片中各种脑洞大开,科技设定可圈可点,例如量子计算机、脑机接口、太空电梯等。从专业角度来看,作为国产科幻大片之光的《流浪地球2》为了保证真实性确实狠…

二叉平衡树 之 红黑树 (手动模拟实现)

目录 1、红黑树的概念 2、红黑树的性质 3、红黑树节点的定义 4、红黑树的插入 5、红黑树验证 代码汇总 6、红黑树的删除(了解) 7、红黑树的应用 8、红黑树 VS AVL树 1、红黑树的概念 红黑树,就是一种特殊的二叉搜索树,每个…

MySQL详解(四)——高级 2.0

性能分析 Explain 使用EXPLAIN关键字可以模拟优化器(不改变查询结果前提下,调整查询顺序,生成执行计划)执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈 功能&#x…

ECharts线性渐变色示例演示(2种渐变方式)

第003个点击查看专栏目录Echarts的渐变色采用了echarts.graphic.LinearGradient的方法,可以根据代码中的内容来看如何使用。线性渐变,多用于折线柱形图,前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1,相当于在图形包围盒中的百分…

PTA L1-025 正整数A+B(详解)

前言:本期是关于正整数AB的详解,内容包括四大模块:题目,代码实现,大致思路,代码解读,今天你c了吗? 题目: 题的目标很简单,就是求两个正整数A和B的和&#xf…

用户使用苹果AirTag来追踪宠物存在风险,苹果Find My功能用处广

苹果的 AirTag 不失为追踪宠物的一种便捷方式,这样宠物即便挣脱宠物圈或者其它方式丢失,都可以通过“Find My”方式追踪定位。正如《华尔街日报》所指出的,这种方式也存在 AirTag 被宠物吞食的风险。 AirTag 的直径为 1.26 英寸&#xff0c…

【Faster R-CNN】之 Resize_and_Padding 代码精读

【Faster R-CNN】之 Resize_and_Padding1、前言:2、resize_image_and_bbox1)先对图像做resize处理2)再对 bounding box 做resize处理3、padding_images代码1、前言: 在上一篇文章 【Faster R-CNN】之 Dataset and Dataloader 代码…

Linux网络:传输层之UDPTCP协议

文章目录一、端口号1.端口号范围划分2.常用命令二、UDP 协议1.格式2.特点3. UDP 的缓冲区4. UDP 使用注意事项5.基于 UDP 的应用层协议三、TCP 协议1.格式2.确认应答机制3.超时重传机制4.连接管理机制三次握手四次挥手5.滑动窗口6.流量控制7.拥塞控制8.延迟应答9.捎带应答10.面…

PyQt5利用Qt Designer制作一个可以拖动获取文件信息的页面

前言 本篇在讲什么 用pyqt5制作一个简单的程序,拖动文件或脚本可以读取文件信息 本篇适合什么 适合初学PyQt5的小白 本篇需要什么 对Python语法有简单认知 对Qt有简单认知 依赖Pycharm编辑器 本篇的特色 具有全流程的图文教学 重实践,轻理论&…

[Golang实战]整理Golang忽略的问题

整理Golang忽略的问题参考资料1.WaitGroup与GoRoutine的竞速2.Mutex互斥锁和RWMutex互斥读写锁3.poll,select,epoll4.何时栈和堆?5.GoRoutine合理使用6.GoRoutine优雅退出6.1data channel关闭通知退出6.2exit channel关闭通知退出6.3context超时或取消通知退出6.4WaitGroup/Er…

IPWorks EDI 2022.0.8381 for NET Crack

IPWorks EDI基于用于安全 EDI 通信(AS2、SFTP、OFTP、RosettaNet、MLLP 等)的领先 EDI-INT 协议,IPWorks EDI 库包含促进安全 EDI 消息传递以及 EDI 映射、翻译和验证(X12、 EDIFACT、HL7、TRADACOMS、VDA、XML 和 JSON&#xff0…

golang/安装

golang中文官网 https://golang.google.cn/ golang下载 安装 一路next 配置 配置值说明GOROOTD:\ProgramFiles\golanggolang安装目录PATHD:\ProgramFiles\golang\bingolang命令路径GO111MODULEon开启go.mod功能,go.mod是go官方依赖包管理工具GOPROXYhttps://go…

【FPGA笔记系列7】时序逻辑电路基础D触发器

时序逻辑电路 组合逻辑与时序逻辑电路的本质区别:时序逻辑电路的输出和前一时刻的状态有关,组合逻辑电路的输出只和当前的输入有关 与非门RS锁存器的缺陷:当SR从00变到11时,状态不稳定! 电路中小圈圈表示低电平有效! 透明锁存器 R=1当En=1时,Q=S当En=0时,后面为RS触发器…

使用git合并两个不同项目代码

使用git合并两个不同项目代码 前言, 这里解决的是两个不同的项目, 因为不同项目那必然是两个不同的git仓库 都是不同的git仓库了那就更不可能是相同的分支了(即使分支名相同) 至于为什么会有这种业务情况出现, 我也不知道, 反正先学干就完了 这里图形化界面演示用的是idea自带的…

人工智能时代八大类算法你了解吗?(包邮送书6本)

文章目录本文导读1. 关联规则分析2. 回归分析3. 分类分析4. 聚类分析5. 集成学习6. 自然语言处理7. 图像处理8. 深度学习9. 书籍推荐(包邮送书6本)本文导读 从零带你了解人工智能时代需要掌握的8大类算法,包括基础理论、关联规则分析、回归分…

Java-基础-4.IO流

一:为什么有IO流? 在显示生产中,我们的数据,都是不停的往过输入和输出,我们将这种模式称作为流。并且在输入和输出的过程中,我们包装了一些其他类。 二:什么是IO流? 1. 按照数据处理…