Pytorch深度学习——用Mini-Batch训练数据(B站刘二大人P8学习笔记)

深度学习入门-mini-batch学习 深度学习属于端到端的学习,从原始数据(输入)中获得目标结果(输出)的意思。 神经网络的优点是对所有的问题都可以用同样的流程来解决。 比如,不管要求解的问题是识别5,还是识别狗,抑或是识别人脸,神经网络都是通 过不断地学习所提供的数据,尝试发现待求解的问题的模式。 也就是说,与待处理的问题无关,神经网络可以将数据直接作为原始数据,进行“端对端” 的学习。 神经网络的学习所用指标是损失函数。两种常用的损失函数: 均方误差: y是神经网络输出,t是监督数据 import numpy as np def mea. 阅读详情
AI摘要

本文介绍Mini-Batch训练方法,对比Full-Batch与随机梯度下降,讲解Dataset与DataLoader使用,通过糖尿病数据集示例说明如何实现Mini-Batch训练。

目录

1  Mini-Batch基本知识

2  DataLoader的工作原理:

3  具体代码实例 


1  Mini-Batch基本知识

        在先前我们学习的内容中,一种情况是采用Full-Batch来训练数据;还有一种情况是在随机梯度下降中,只随机取其中一个数据来计算梯度。其中随机梯度下降可以很好的解决训练数据时遇到的鞍点问题,但是会导致训练时间过长。所以,接下来我们要学习的是采用Mini-Batch的方法来训练数据,这种方法的优点是可以均衡性能和训练时间上的需求。

        采用Mini-Batch的方法来训练数据时,需要使用Dataset和DataLoader两个工具类:

  • Dataset:用来构造数据集,使数据集可以通过索引快速取出
  • DataLoader:取出一个Mini-Batch,一组数据

        采用Mini-Batch训练数据需要掌握的三个概念:

  1. Epoch:1次epoch表示把所有的训练样本都进行了一次前馈和反馈的训练;
  2. Batch-Size:表示一次前馈和反馈所使用的样本数量;
  3. Iteration:将样本一共分成了几个Mini-Batch。

例:10000个样本,其中Batch-size=1000,则Iteration=10000/1000=10。

2  DataLoader的工作原理:

使用DataLoader时需要两个基本参数:

  1. shuffle :是否打乱数据顺序
  2. batch-size:每个Mini-Batch需要的数据量

        如图所示,是 batch-size=2,shuffle=true 时的运行原理,首先将dataset中的数据打乱,而后进行分组,分成一个一个的Mini-batch。

3  具体代码实例 

        案例依然按照上一章所讲的糖尿病数据集,具体获取数据集方法见以下链接:Pytorch深度学习——处理多维度特征的输入(B站刘二大人P7学习笔记)_Learning_AI的博客-优快云博客

        采用Mini-Batch训练数据的全部代码以及注释如下:

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


# 自定义一个类并继承自Dataset类,此类用来封装数据
class DiabetesDataset(Dataset):
    def __init__(self, filepath):
        xy = np.loadtxt(filepath, delimiter=',', dtype=np.float32)
        # xy是一个N行9列的矩阵,所以xy.shape拿到的就是(N,9)这样一个元组,取索引0位的数字就可以得到数据的条数。
        self.len = xy.shape[0]
        self.x_data = torch.from_numpy(xy[:, :-1])
        self.y_data = torch.from_numpy(xy[:, [-1]])

    # getitem函数,可以使用索引拿到数据
    def __getitem__(self, index):
        return self.x_data[index], self.y_data[index]

    # 返回数据的条数/长度
    def __len__(self):
        return self.len


# 实例化自定义类,并传入数据地址
dataset = DiabetesDataset('diabetes.csv.gz')

# num_workers是否要进行多线程服务,num_worker=2 就是2个进程并行运行
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(reduction='mean')
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 防止报错
if __name__=='__main__':
    # 采用Mini-Batch的方法训练要采用多层嵌套循环
    # 所有数据都跑100遍
    for epoch in range(100):
        # enumerate可以获得当前是第几次迭代,内部迭代每一次跑一个Mini-Batch
        for i, data in enumerate(train_loader, 0):
            # data从train_loader中取出数据(取出的是一个元组数据)
            # inputs获取到data中的x的值,labels获取到data中的y值
            inputs, labels = data
            y_pred = model(inputs)
            loss = criterion(y_pred, labels)
            print(epoch, i, loss.item())
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()



运行结果部分截图如下:

第8节作业如下链接:Pytorch深度学习——Kaggle网站中泰坦尼克号作业(B站刘二大人P8作业)_Learning_AI的博客-优快云博客

【深度学习】mini-batch训练思想及方法 如果面临过拟合问题,则可以考虑减小batch size,同时注意监测训练和验证的损失曲线,以便找到最佳的batch size。使用mini-batch训练的主要原因是它结合了全批量训练和随机梯度下降的优点,能够在加速收敛的同时提高模型的泛化能力。然而,选择不当的batch size可能导致训练过程的不稳定,甚至影响最终模型的性能。Mini-batch训练方法将整个训练数据集划分为多个小批量(mini-batches),每个小批量包含一定数量的样本。这样循环进行,直到所有mini-batch均被遍历完。 阅读详情

相关推荐

pytorch 分批次训练

batch_size=32 这个是分的批次大小 ,我这里选择每批次32,shuffle=True 是否随机打乱 num_workers=2 表示加载时使用多少个子进程这个根据自己的配置自行选择。之前那种我们会发现运行的速度反而会较之前慢一些 因为还进行了分批次等操作 同时也没有特别好的运用 GPU并行能力,之前的都是使用直接训练虽然它有它自己的优点但分批次训练也是一种重要的方法。使用的数据集依然是8个特征的糖尿病预测二分问题数据集的获取,见我之前文章。数据集的引入 因为要分批次所以要写几个魔法函数。

tynewbilar的博客 2392

minibatch

转自:https://testerhome.com/topics/10877 回顾 之前我们讲到了一些在训练模型的时候用到的超参数,例如上一次说的L2 正则, 在过拟合的场景中增加L2的值有助于减小网络的复杂度。 还有诸如学习率, 在梯度下降中,每一次迭代的下降的步长是学习率乘以成本函数对w的导数。所以如果我们想让算法训练的快一点,调高学习率可以有效的减少迭代次数。 诸如此类的还有迭代次数,激...

qq_39861441的博客 1万+

刘二大人《PyTorch深度学习实践》

刘二大人《PyTorch深度学习实践》线性模型 线性模型 损失函数是针对一个样本的 training set得到的是一个平均平方误差MSE 穷举法绘制损失曲线:numpy和matplotlib import numpy as np import matplotlib.pyplot as plt #数据集 x_data = [1.0,2.0,3.0] y_data = [2.0,4.0,6.0] #定义模型 def forward(x): return x * w #定义损失函数 def loss

baimenglin的博客 3558

机器学习中mini-batch和batch有什么区别

mini-batch 是一个相对较小的数据子集,用于训练过程中的迭代更新,而 batch 是整个训练数据集的一次性处理。模型使用每个 mini-batch 的样本来进行前向传播、计算损失和反向传播,然后根据这些样本的梯度更新模型的参数。使用 mini-batch 的主要目的是。在每次迭代时,模型使用整个训练数据集的样本进行前向传播、计算损失和反向传播,然后根据这些样本的梯度更新模型的参数。相比于 mini-batch,使用 batch 的训练过程可能会占用更多的内存和计算资源,因为需要同时处理整个数据集。

行子的博客 5245

CTFshow MISC入门实战:010Editor+TweakPNG解决PNG隐写难题(附完整脚本)

本文详细介绍了在CTFshow MISC比赛中,如何利用010Editor和TweakPNG两款专业工具构建高效的PNG隐写分析工作流。文章从PNG文件结构解析入手,通过实战案例演示了如何协同使用010Editor进行二进制侦察与结构分析,以及使用TweakPNG进行数据块的精准编辑与删除,并最终提供了自动化分析脚本,帮助选手系统性地解决PNG隐写难题。

weixin_29252171的博客 75

【TCAX相关】Python 官方手册下载页面(中文+英文)

Python 官方手册下载页面(中文+英文) 中文: https://docs.python.org/zh-cn/3.8/archives/ https://docs.python.org/zh-cn/3.6/archives/ 英文: https://www.python.org/doc/versions/ https://docs.python.org/3/archives/ https://www.python.org/ftp/python/doc/ ...

Seekladoom的博客 1012

Pytorch深度学习——处理多维度特征的输入(B站刘二大人P7学习笔记)

每一行叫记录、分类,每一列叫特征、字段, 二维关系表 X1~X8的值构成一个矩阵,Y构成一个矩阵,就完成输入的数据集 Y表示未来一年,糖尿病病情是否会加重 模型的改变 图片 八个特征每一个取值都和一个权重相乘,在家一个偏置量 Pytorch提供的Sigmoid函数是一个按照向量内每个元素计算的函数(Sigmoid function is in an element-wise dashion.) 代码的改变 为什么要把方程运算转换成矩阵运算? 把方程运算转换成矩阵这种向量化的运算之后,可.

Learning_AI的博客 8047

工业视觉中HDR算法的动态范围优化与Debevec/Mertens方法实践

本文深入探讨了工业视觉中HDR(高动态范围)成像技术,重点解析了Debevec和Mertens两种核心算法。针对工业场景中因动态范围不足导致的过曝与欠曝问题,文章详细对比了两种方法的原理、实现步骤、参数调优及适用场景,为工程师在静态检测与高速产线等不同需求下,选择并实践HDR算法提供了清晰的指导。

weixin_29099217的博客 193

PyTorch 深度学习实践 第8讲

第8讲 加载数据集源代码 B站 刘二大人,传送门PyTorch深度学习实践——加载数据集 说明:1、DataSet 是抽象类,不能实例化对象,主要是用于构造我们的数据集 2、DataLoader 需要获取DataSet提供的索引[i]和len;用来帮助我们加载数据,比如说做shuffle(提高数据集的随机性),batch_size,能拿出Mini-Batch进行训练。它帮我们自动完成这些工作。DataLoader可实例化对象。 代码说明: 1、需要mini_batch...

bit452的专栏 4万+

1.2 重叠因子:双重指数移动平均(Double Exponential Moving Average, DEMA)概念与Python实战

双重指数移动平均(Double Exponential Moving Average, DEMA)是一种改进的移动平均线指标,由Patrick Mulloy在1994年开发。相比传统的指数移动平均线(EMA),DEMA通过减少滞后性来提供更快的市场反应。它通过两次计算EMA并进行特殊组合来实现这一目标,可以在保持平滑性的同时减少滞后。

Kewin的博客 2168

关于42步进电机驱动——基于STM32 HAL库实现

我找了好多资料,好多关于42步进电机的都是文档,这么文档都需要积分,需要积分就算了内容还非常差,浪费时间和电脑的内存。关于大部分是基于Arduino和51去驱动的 42步进电机驱动硬件如下: 首先你要了解步进电机的驱动原理,我也不啰嗦了,请看这边博客: 二相四线,四相五线,四相六线步进电机接线及驱动方法 , 看完这篇你就知道驱动和接线的原理了。 起初我也为如何接线烦恼,因为有些博客在讲述这些问题的时候没有讲的很透彻。 方法如下: ①用万用表调到欧姆档,用其中一个表笔搭在一个引脚上,依次测其它.

Jodan132的博客 1万+

刘二大人《PyTorch深度学习实践》p8加载数据集

刘二大人《PyTorch深度学习实践》p8加载数据集一、零碎知识点1.enumerate()二、Batch(批次)和Mini-Batch1.Mini-Batch2.Dataset(数据集)3.DataLoader(数据加载器)三、课程代码 一、零碎知识点 1.enumerate() enumerate()是python的一个内置函数,用于对可迭代对象进行遍历,并返回索引和对应的元素。 citys = ["wuhan", "chengdu", "shanghai", "beijing"] for index,

xzrrr的博客 1025

从理论到实践:使用Sigrity SystemSI完成DDR4信号完整性仿真全流程解析

本文详细解析了使用Sigrity SystemSI完成DDR4信号完整性仿真的全流程,从核心挑战到实战操作。文章深入探讨了DDR4信号完整性问题,介绍了SystemSI工具链的演进与分工,并提供了从前期准备到高级技巧的详细指南,帮助工程师有效解决DDR4设计中的信号完整性问题。

weixin_30505225的博客 511

刘二大人 PyTorch深度学习实践 笔记 P8 加载数据集

刘二大人 PyTorch深度学习实践 笔记 P8 加载数据集

qq_44948213的博客 1834

多模态大模型:技术原理与实战 全球多模态大模型介绍

关键词:多模态大模型、深度学习、计算机视觉、自然语言处理、跨模态学习、迁移学习、人工智能随着人工智能技术的飞速发展,多模态大模型已经成为了当前AI领域最热门的研究方向之一。多模态大模型能够同时处理和理解多种类型的数据,如文本、图像、音频和视频等,这为AI系统在复杂场景下的应用提供了更加强大和灵活的能力。本文将深入探讨多模态大模型的技术原理,介绍其实战应用,并对全球主要的多模态大模型进行全面的介绍和比较。

AI天才研究院 4268

YOLOv11目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标

本文主要讲解的是计算机视觉网络模型的性能评价指标,这是每一篇论文中都需要展示的内容。熟悉每一个评价指标也能够帮助我们在训练和改进模型过程中,更好的观察模型的变化效果。

Limiiiing的博客 8411

Pytorch深度学习——加载数据集(b站刘二大人)P8讲 加载数据集

1.Dataset and DataLoader(加载数据的两个工具类) dataset:构造数据集(数据集应该支持索引,能够用下标操作快速把数据拿出来) dataloader :主要目标用来拿出一个mini-batch来供训练时快速使用。 2.Mini-batch 优点 我们之前学过在进行梯度下降时,有两种选择: ①全部的数据都用(Batch) ②随机梯度下降:只用一个样本 只用一个样本可以得到比较好的随机性,可以帮助我们跨越在优化中所遇到的鞍点,而用Batch(所有数据)...

m0_60152377的博客 2503

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

深入剖析深度学习中Batch Size大小对训练过程的影响

点击上方“AI算法与图像处理”,选择加"星标"或“置顶”重磅干货,第一时间送达推荐文章【点击下面可直接跳转】:来源:https://zhuanlan.zhihu.com/...

zero的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

加载数据集(b站刘二大人)

参考:自用,在意请联系删除 Pytorch深度学习——加载数据集(b站刘二大人)P8讲 加载数据集_努力学习的朱朱的博客-优快云博客 1. ①全部的数据都用(Batch) ②随机梯度下降:只用一个样本 只用一个样本可以得到比较好的随机性,可以帮助我们跨越在优化中所遇到的鞍点,而用Batch(所有数据)的优点是可以最大化地利用向量计算的优势提升计算速度。 都用一个样本的随机梯度下降训练出的模型效果可能会比其他模型都更好,但是会导致优化用的时间更长,因为每次一个样本没法使用cpu或g...

qq_42036869的博客 765

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【PyTorch与深度学习】4、PyTorch的Dataset与DataLoader详细使用教程

最近做实验发现自己还是基础框架上掌握得不好,于是开始重学一遍PyTorch框架,这个是课程笔记,这个课还是讲的简略,我半小时的课听了一个半小时。

随手写写 2076

PyTorch深度学习实践【刘二大人】之加载数据集

只用一个样本会得到比较好的随机性,会帮助跨越鞍点。用全部样本计算速度会大大提升。深度学习中我们会使用mini-batch来均衡性能上时间上的需求。Iteration定义:每次训练使用batch-size的次数,即总样本数/batch-size。在梯度下降中有时用全部的数据,有时只用一个样本也称随机梯度下降。batch-size定义:每次训练时所用的样本数量。epoch定义:所有样本都参与了训练。batch-size为2并且打乱顺序。

EnochChen_的博客 345

【 数据集加载 Dataset&DataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10)】

在本节中没有关于数学原理的相关介绍,使用的数据集和类型仍然是(6、10)的相关内容。在这里主要是介绍dataset ,dataloader两个类以及mini-batch方法梯度下降方法:1.全部数据都使用,batch,最大化使用向量计算优势,提升计算速度2.随机梯度下降,只用一个样本,会得到较好的随机性,克服鞍点的问题。Mini-batch :将1,2进行结合,进行两层循环嵌套,在每个epoch中执行一次mini-batch。

qq_43649786的博客 615

3 种梯度下降变体对比:FG、SG、Mini-batch 在 PyTorch 中的内存与速度实测

本文基于PyTorch框架,对比分析了全梯度下降(FG)、随机梯度下降(SG)和小批量梯度下降(Mini-batch)三种优化算法在内存占用、训练速度和模型精度上的表现。通过CIFAR-10数据集上的实测数据,为开发者提供了梯度下降变体的选型指南和工程实践建议,帮助优化深度学习模型训练效率。

weixin_34026276的博客 337

PyTorch深度学习实践-P8加载数据集

Dataset and DataLoader datase用来构造数据集,数据集应该支持索引 ,dataloader用来拿出一个mini-batch来供训练时快速使用。 复习: 用全部batch,可以提升计算速度,可以使用CPU、GPU的并行能力,在处理性能上会较慢 使用一个样本来随机梯度下降,可以帮助我我们跨过鞍点,但会导致优化时间过长,一个样本本没法使用并行计算能力,数据上下有关联 使用mini-batch平衡性能和时间的需求 对于epoch、batch-size、iterations的定义:

m0_60673782的博客 590

pytorch中的dataset和DataLoader创建数据集进行训练

目录序言Dataset和DataLoaderDatasetDataLoader具体实现(构造数据集、加载数据集、训练) 序言 1.每次采用一个样本进行随机梯度下降,会得到随机性较好的训练结果,但是速度较慢,训练时间长 2.加入batch,用全部的样本进行训练时速度十分快,但是会训练效果会下降。 所以在这里引入mini-batch,综合二者的优点,得到折衷的结果。 batch_size(批量大小):进行一次前馈、反馈、更新所用到的样本数量 iteration(迭代次数):样本数量/批量大小 一般来说PyTor

gary101818的博客 3422

【PyTorch深度学习实践】 -- 加载数据集

PyTorch深度学习实践

qq_46656857的博客 518
上一篇: Pytorch深度学习——不同激活函数处理多维特征的输入(B站刘二大人P7作业)
下一篇: Pytorch深度学习——Kaggle网站中泰坦尼克号作业(B站刘二大人P8作业)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习CV的研一小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值