剖析深度学习中的epoch与batch_size关系、代码

目录

  • 前言
  • 1. 定义
  • 2. 代码

前言

为了区分深度学习中这两者的定义,详细讲解其关系以及代码

1. 定义

在 PyTorch 中,“epoch”(周期)和 “batch size”(批大小)是训练神经网络时的两个重要概念

它们用于控制训练的迭代和数据处理方式。

一、Epoch(周期):

  • Epoch 是指整个训练数据集被神经网络完整地遍历一次的次数。
  • 在每个 epoch 中,模型会一次又一次地使用数据集中的不同样本进行训练,以更新模型的权重。
  • 通常,一个 epoch 包含多个迭代(iterations),每个迭代是一次权重更新的过程。
  • 训练多个 epoch 的目的是让模型不断地学习,提高性能,直到收敛到最佳性能或达到停止条件。

二、Batch Size(批大小):

  • Batch size 指的是每次模型权重更新时所使用的样本数。
  • 通过将训练数据分成小批次,可以实现并行计算,提高训练效率。
  • 较大的 batch size 可能会加速训练,但可能需要更多内存和计算资源。较小的 batch size 可能更适合小型数据集或资源受限的情况。
  • 常见的 batch size 值通常是 32、64、128 等。

三、如何理解它们的关系:

  • 在训练过程中,每个 epoch 包含多个 batch,而 batch size 决定了每个 batch 中包含多少样本。
  • 在每个 epoch 开始时,数据集会被随机划分为多个 batch,然后模型使用这些 batch 逐一进行前向传播和反向传播,从而更新权重。
  • 一次 epoch 完成后,数据集会被重新随机划分为新的 batch,这个过程会重复多次,直到完成指定数量的 epoch 或达到停止条件。

总之,epoch 控制了整个训练的迭代次数,而 batch size 决定了每次迭代中处理的样本数量。这两个参数的选择取决于你的任务和资源,通常需要进行调优以获得最佳性能。

2. 代码

大致深度学习的代码中如下:

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset# 创建一个包含数字1到10的数据集
X_train = torch.arange(1, 11, dtype=torch.float32)
y_train = X_train * 2  # 假设我们的任务是学习一个简单的线性关系,y = 2x# 转换数据为 PyTorch 张量
X_train = X_train.view(-1, 1)  # 将数据转换为列向量
y_train = y_train.view(-1, 1)# 定义神经网络模型
model = nn.Sequential(nn.Linear(1, 1)
)# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 创建 DataLoader 并指定 batch size
batch_size = 3
train_dataset = TensorDataset(X_train, y_train)
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)# 训练循环
num_epochs = 10
for epoch in range(num_epochs):total_loss = 0.0for i, (inputs, labels) in enumerate(train_loader):optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()total_loss += loss.item()print("inputs:",inputs.numpy())average_loss = total_loss / len(train_loader)print(f"Epoch {epoch + 1}/{num_epochs}, Loss: {average_loss:.4f}")

执行完的结果截图:

在这里插入图片描述

大致结果详细如下:

inputs: [[1.][8.][7.]]
inputs: [[4.][3.][6.]]
inputs: [[ 5.][ 9.][10.]]
inputs: [[2.]]
Epoch 1/10, Loss: 39.6693
inputs: [[ 1.][ 2.][10.]]
inputs: [[9.][8.][6.]]
inputs: [[5.][3.][7.]]
inputs: [[4.]]
Epoch 2/10, Loss: 0.1154
inputs: [[2.][1.][9.]]
inputs: [[10.][ 5.][ 4.]]
inputs: [[6.][8.][7.]]
inputs: [[3.]]
Epoch 3/10, Loss: 0.0317
inputs: [[7.][9.][1.]]
inputs: [[6.][3.][4.]]
inputs: [[10.][ 8.][ 5.]]
inputs: [[2.]]
Epoch 4/10, Loss: 0.0414
inputs: [[9.][6.][4.]]
inputs: [[2.][3.][1.]]
inputs: [[ 8.][10.][ 5.]]
inputs: [[7.]]
Epoch 5/10, Loss: 0.0260
inputs: [[6.][3.][4.]]
inputs: [[ 5.][10.][ 8.]]
inputs: [[2.][7.][9.]]
inputs: [[1.]]
Epoch 6/10, Loss: 0.0386
inputs: [[ 6.][10.][ 4.]]
inputs: [[5.][7.][8.]]
inputs: [[1.][9.][2.]]
inputs: [[3.]]
Epoch 7/10, Loss: 0.0254
inputs: [[6.][8.][2.]]
inputs: [[ 3.][10.][ 1.]]
inputs: [[9.][4.][5.]]
inputs: [[7.]]
Epoch 8/10, Loss: 0.0197
inputs: [[ 2.][ 3.][10.]]
inputs: [[9.][4.][5.]]
inputs: [[8.][1.][6.]]
inputs: [[7.]]
Epoch 9/10, Loss: 0.0179
inputs: [[ 7.][ 9.][10.]]
inputs: [[3.][2.][5.]]
inputs: [[4.][1.][8.]]
inputs: [[6.]]
Epoch 10/10, Loss: 0.0216

这说明一个epoch会把整个数据都训练完

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据】Kafka 入门简介

Kafka 入门简介 1.什么是 Kafka2.Kafka 的基本概念3.Kafka 分布式架构4.配置单机版 Kafka4.1 下载并解压包4.2 启动 Kafka4.3 创建 Topic4.4 向 Topic 中发送消息4.5 从 Topic 中消费消息 5.实验5.1 实验一:Python 实现生产者消费者5.2 实验二:消费组实现…

光伏电站绝缘阻抗异常排查方法

安科瑞 崔丽洁 概述 01 光伏发电是依托电力电子技术,利用太阳光照将太阳能转化为电能的系统。光伏发电不需要使用化石燃料,减少了发电时产生的污染,并且减少了能源消耗。光伏发电依托政策扶持,快速在国内普及。光伏发电与传统火电发电原理不同…

模糊测试面面观 | 车联网场景模糊测试解决方案

随着国际国内汽车信息安全标准的出台、用户安全意识的不断提高以及针对智能网联汽车安全攻击的不断规模化复杂化和深入,智能网联汽车系统及车联网安全形势严峻。 然而大部分车型在信息安全防护方面水平偏低,车内相关的联网部件及控制部件防护可靠性不高&…

Python接口自动化 —— token登录(详解)

简介 为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。有些登录不是用 cookie 来验证的,是用 token 参数来判断是否登录。token 传参有两种一种是放在请求头里,本质上是跟 cookie 是一样的&am…

实时精准 自我防护 | 开源网安RASP平台能力获客户认可!

近日,开源网安收到了一封来自华润数科的感谢信,表达了对开源网安团队在网络安全工作中给予大力支持的衷心感谢。开源网安十分注重客户的需求和信任,客户的满意和认可是开源网安最大的追求。 在助力华润数科网络安全工作开展过程中&#xff0c…

1数据结构的分类,算法效率的度量

一,数据结构的定义和分类 数据结构:数据之间的关系即数据的逻辑结构,因为要存储到计算机里,所以视为将这个数据的逻辑结构映射到存储器里。即数据因为自身的和其他的数据的关系而在计算机内存储的方式。我们就归类了一些类型。 二…

【数据结构】栈(C语言实现)

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 栈 1.栈1.1栈的概念及结构…

2023年中国商业版服务器操作系统市场发展规模分析:未来将保持稳定增长[图]

服务器操作系统一般指的是安装在大型计算机上的操作系统,比如Web服务器、应用服务器和数据库服务器等,是企业IT系统的基础架构平台,也是按应用领域划分的三类操作系统之一。同时服务器操作系统也可以安装在个人电脑上。 服务器操作系统分类 …

荧光EEM平滑教程(去除散射)

说明:本文为drEEM工具箱官网教程《Smoothing EEMs》的笔记。 瑞利散射是一种弹性散射。来自激发源的光子遇到溶液中的分子之后,反弹到各个方向。 最重要的是,瑞利散射(的发射波长)总是与激发波长完全相等。 因此&…

深入研究Java线程Dump分析:掌握发现和解决多线程问题的关键技巧

1 Thread Dump介绍 1.1 什么是Thread Dump Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活动线程的快…

关于python环境下的语音转文本,whisper或funASR

因为前阵子,有需求要将语音转为文本再进行下一步操作。感觉这个技术也不算是什么新需求,但是一搜,都是大厂的api,或者是什么什么软件,由于想要免费的,同时也要嵌入在代码中,所以这些都不能用。、…

一个三年女软件测试的成长之路

如果你恰好刚刚进入一家新公司,领导一上来就让你开展自动化测试,作为一名初出茅庐的测试新人,除了手足无措,你只能默默慨叹自己能力尚欠,眼前只会出现一个又一个无从下手的问题: 作为手工测试,…

55 零钱兑换

零钱兑换 题解1 DP另一种解法(更好记) 题解2 递归 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回…

1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

专栏集锦,赶紧收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.…

《Operating Systems:Three Easy Pieces》 操作系统导论【二】 虚拟化内存

【Operating Systems:Three Easy Pieces 操作系统导论 】 (九) 抽象:地址空间 早期系统 操作系统曾经是一组函数(实际上是一个库),在内存中(在本例中,从物理地址0开始),然后有一…

程序员各阶段应该掌握的技术与能力

人人都是产品经理 | 产品经理、产品爱好者学习交流平台 (woshipm.com)

华为云云耀云服务器L实例评测|使用clickhouse-benchmark工具对ClickHouse的性能测试

目录 引言 1 ClickHouse简介 2 利用docker安装ClickHouse 2.1 安装Docker 2.2 下载ClickHouse Docker镜像 2.3 创建ClickHouse容器 2.4 访问ClickHouse 3 创建测试表 4 运行 clickhouse-benchmark 5 分析结果 结语 引言 利用华为云的云耀云服务器L实例&#xff0c…

lunux查找占用内存前10的进程

1、使用Top命令查询进程 输入 top 命令,然后按下大写M按照内存MEM排序,按下大写P按照CPU排序。 2、查询占用CPU最高的前10个进程 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 3|head 3、查询占用内存最大的前10个进程 ps aux|head -1;ps aux|grep …

【ELK使用指南 2】常用的 Logstash filter 插件详解(附应用实例)

Logstash filter 一、logstash filter过滤插件的常用模块简介二、grok 正则捕获插件2.1 grok插件的作用2.2 内置正则表达式2.3 自定义正则表达式 三、mutate 数据修改插件3.1 mutate插件的作用3.2 常用的配置选项3.3 mutate插件应用实例 四、multiline 多行合并插件4.1 multili…

电容元件符号与工作原理:电子电路中的电荷储存利器 | 百能云芯

电容是电子电路中常见的元件之一,它具有储存电荷的能力。在电路图中,电容有一个特定的元件符号,用于表示其存在和连接方式。接下来,云芯带您深入了解电容的元件符号以及它的工作原理。 电容的元件符号通常由两个平行的线段组成&am…