神经网络epoch和batch的粗浅理解

2023-05-16

关于神经网络epoch和batch的理解

理解粗浅,仅为个人想法,提前感谢指正。

epoch

一个epoch代表全部数据进入网络一次,这个时候,整个网络结构只对这批数据全部走完一次,损失函数的下降还不够,因此需要多次epoch。需要多少个epoch才能使得网络训练到较为合理的地步,暂时没有定论,具体问题具体分析。

batch

batch指的是将一个epoch(所有数据)分割成几份,每份的大小为batch size。问题来了,为什么要把数据切割成一个batch一个batch进去训练呢?关于这个问题,基础不扎实的小白也想了好久。查阅了不少博客,有人提到,第一个原因,有时候一整份数据量过多,无法一次性全部喂进去,即内存不够。这又是为什么呢?把全部数据喂进去的时候网络是如何更新参数的呢?如果不分batch,一次性全部投入网络,那么网络是如何更新(即为什么占用内存过大)参数的呢?

举例

举个例子,有一份数据,包含100个样本,每个样本有10个特征值,那么这份数据就为(100,10)。再来看网络,假设是一个回归的预测问题,用最简单的全连接层,第一层为(input_size,hidden_size),hidden_size的大小自定义,这边假设为15,即网络的第一层为(10,15)。依此假设,第二层(15,10),第三层(10,1)。那么数据一次性进入网络的前向传播就会这样计算,(100,10)x(10,15)=(100,15),(100,15)x(15,10)=(100,10),(100,10)x(10,1)=(100,1)。到这里,输出层的输出就为(100,1)的一个向量,也就是我们要预测的值。这里只是100个样本,计算机可以轻松满足,但如果变成1000,10000,100000…还有实际的网络结构也会更复杂,反向传播所需要的计算量也远大于前向传播。因此分batch也是为了满足较小的内存计算。

第二个原因,是最优解的问题。接上面的回归网络,用mse损失函数,不分batch,这时候一个epoch的损失函数是这100个样本和真实标签的mse之和。
这时候BP,是要使得这100个样本的总和mse下降。也就是说,这时候的BP,会照顾到所有样本,让大家尽量都下降,但无法照顾到每一个样本,较为稳定,也更容易陷入局部最优解,即某种鞍点。因为损失函数就想着,啊,既然总体稳定下降,我也无需跑更远了,大家就在这附近老实呆着吧。但如果是分batch,每个batch之间的差异更大(假设,epoch是班级,batch是班级里的小组(极端点的话,个人,就是batch_size为1),班级和班级的差异,一般来说会比小组(个人)之间的差异小。不太准确,抽象理解)。损失函数为了让每个batch下降。不得不到处跑,没办法,大家差异有点大,这样,最终解不容易陷入局部,能找到更好的方向下降,泛化性也更强一些。

总结,不分batch,梯度下降较为稳定,但容易陷入局部最优解,同时内存也是个问题。如果batch_size为1,损失函数为了下降就要到处跑,非常不稳定,不容易收敛。最后,适当的batch_size能帮助网络较为稳定的下降,也能加快收敛速度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

神经网络epoch和batch的粗浅理解 的相关文章

  • Android系统和linux内核的关系详解

    Android系统和linux内核的关系详解 大家都知道Android是基于Linux内核的操作系统 xff0c 也曾经和Linux基金会因为内核问题产生过分歧 可以参考本文 后面的 参考阅读 这里主要对android和linux的关系进行
  • 详解词袋模型

    个人博客 xff1a http www chenjianqu com 原文链接 xff1a http www chenjianqu com show 101 html 本文是 lt 视觉SLAM14讲 gt 的学习笔记 xff0c 今天学习
  • 如何判断树莓派通过GPIO与5G模块成功连接?

    如果想要判断自己是否成功连接了树莓派与5G模块 xff0c 可以通过以下方式进行判断 xff1a 查看设备连接状态 xff1a 可以通过在树莓派终端中执行lsusb命令来查看USB设备的连接状态 xff0c 如果5G模块被识别到 xff0c
  • Windows桌面应用程序(1-3rd) 64位Windows编程指南

    微软已经发布了64位版本的Windows操作系统 64位Windows在设计时考虑了兼容性 开发人员可以确保其现有的32位应用程序在64位Windows下运行良好 xff0c 或通过迁移其应用程序来利用64位Windows的优势 64位Wi
  • gazebo打不开world的通用解决方法

    打开gazebo的时候会发现一直处于这种状态 xff0c 这是因为model库加载不正确导致的 解决方法 xff1a 通过直接下载所有模型到用户的根目录下的 gazebo models 下 cd gazebo mkdir p models
  • ubuntu环境下使用mitmproxy代理服务器

    在网上看了很多参考 xff0c 介绍的很多都是废话 xff0c 很多答案都是一样的 我最近是在用selenium工具来爬取猫眼的电影数据 xff0c 因为猫眼有文字加密和美团验证 xff0c 一般的爬取可能容易被检测 所以我使用seleni
  • ubuntu c\c++环境中第三方依赖包的使用

    第三方依赖包的使用需要导入第三方依赖包中的include和lib文件 下面例子中以ffmpeg为例 据我成功尝试之后的有这两种 xff0c 其他的方法肯定还有 xff0c 比如直接导入目前的linux环境中 xff0c 改变量啥的 xff0
  • 解决sudo rosdep init ERROR: cannot download default sources list from问题,亲测可用

    解决sudo rosdep init ERROR cannot download default sources list from问题 xff0c 亲测可用 问题描述 按照 ros installation在ubuntu 16 04上安装
  • realsense d435i SDK及ROS Wrapper安装

    1 安装Realsense SDK git clone https span class token punctuation span span class token operator span github span class tok
  • 解决Git中下载assets文件列表转圈问题

    打开的Git项目 这里我以PcapPlusPlus为例 这里一直转圈打不开 xff0c 使用F12开发者工具 xff0c 用箭头选中这个转圈得到一个网站 通过这个网站可直接打开看见assets里面的全部内容
  • Ubuntu安装CMake

    cmake所做的事其实就是告诉编译器如何去编译链接源代码 你也许想问不是有makefile吗 xff0c 为什么还要它 xff1f 这里就牵涉到跨平台问题 而且其语法也简单 卸载已经安装的旧版的CMake 非必需 apt get autor
  • gPRC基本介绍

    1 说明 gRPC英文全名为Google Remote Procedure Call xff0c 即Google远程过程调用 xff0c 是Google发布的一个高性能 通用的开源RPC框架 xff0c 2 gRPC定义 gRPC是一个现代
  • STM32的引脚模式

    文章目录 51单片机引脚模式STM32单片机的引脚模式上拉输入 GPIO Mode IPU下拉输入 GPIO Mode IPD浮空输入 GPIO Mode IN FLOATING模拟输入 GPIO Mode AIN推挽输出 GPIO Mod
  • Qt QMessageBox使用详解

    本文详细的介绍了QMessageBox控件的各种操作 xff0c 例如 xff1a 消息提示框的使用 判断消息提示框的按钮 标准图标和自定义图标 定时关闭 自定义样式等操作 本文作者原创 xff0c 转载请附上文章出处与本文链接 Qt QM
  • SpringBoot_实现基本增删改查(前后端分离版)

    目录 自学自编实现一个简单的增删改查 xff08 前后端分离版本 xff09 与大家一起分享 xff0c 一起交流和学习 xff01 xff08 1 xff09 程序入口 xff08 2 xff09 建立数据库文件 xff08 3 xff0
  • 云服务器调出图形化界面

    如果需要在云服务器 xff08 centos xff09 上安装软件 xff0c 而且用图形化安装 xff0c 此方法可行以作记录 方法 span class token comment 命令行依次执行 span span class to
  • 超级产品:喜茶,凭什么能估值90亿

    疫情期间 xff0c 呆在家里的这些人 xff0c 最怀念的莫过于以前那一段靠奶茶续命的的日子了 肺炎快点结束吧 xff01 我想出门晒太阳 xff0c 吹海风 xff0c 我想念喜茶了 喜茶居然成为这些人的一个生活场景符号了 喜茶是一家什
  • linux应用编程和网络编程

    注 xff1a 本文是对朱老师linux应用编程和网络编程课程的备忘引导性笔记 xff0c 主要是为了能够在学完后快速回忆起相关内容 本文主要记录了一些关键易忘性知识点并包含少量理解性内容 xff0c 遵循尽量精简的原则 xff0c 以尽量
  • bsp_uart_fifo

    bsp uart fifo h 模块名称 串口中断 43 FIFO驱动模块 文件名称 bsp uart fifo h 说 明 头文件 ifndef BSP USART FIFO H define BSP USART FIFO H
  • 记一次自镜像Docker启动失败ubuntu 安装tini

    使用ubuntu18 04打包镜像启动失败报错信息 xff1a bin sh 1 tini not found 需要安装tini 而ubuntu本身软件源没有这个软件包 apt install y tini 报错 Unable to loc

随机推荐

  • Bluerov电池充电参数及过放补救方法

    Bluerov电池 1 Bluerov电池2 容量3 C rating xff08 放电倍率 xff09 4 充电电流5 充电注意事项及操作说明6 过放使用补救方法 xff08 但电池损耗已不可逆转 xff09 方法步骤 xff1a 1 B
  • Android Parcelable

    一 xff1a 是什么 xff1f Paracelable是android自己的实现序列化的接口 是anroid推荐使用的 那么什么事序列化呢 xff1f 简单来说就是将对象转换为可以传输的二进制流 二进制序列 的过程 这样我们就可以通过序
  • 字符串和字符串结束标志

    在C语言中 xff0c 是将字符串作为字符数组来处理的 例如 xff0c 如下程序 xff1a include lt stdio h gt int main char c 15 61 39 I 39 39 39 39 a 39 39 m 3
  • 单目相机标定方法总结

    单目相机标定的常用方法 xff0c 这里主要总结一下ROS和matlab标定工具箱 ROS相机标定 链接 xff1a https blog csdn net learning tortosie article details 7990125
  • Prometheus之修炼篇

    Prometheus之修炼篇 官方文档 xff1a https prometheus io 中文文档 xff1a 非官方 xff1a https songjiayang gitbooks io prometheus content 一 入门
  • QT视频播放不出来,报错 DirectShowPlayerService::doRender: Unresolved error code 80040266——没有安装视频解码器

    出错1 没有安装视频解码器 DirectShowPlayerService doRender Unresolved error code 0x80040266 出错2 文件路径不对或者文件名是中文的 DirectShowPlayerServ
  • ROS(1)编写第一个ROS程序(创建工作空间workspace和功能包package)

    一 先从三个方面去理解ROS xff1a xff08 自己查 xff0c 不详表 xff09 ROS是什么 xff0c 为什么使用ROS xff0c 如何使用ROS ROS xff08 Robot Operating System xff0
  • jetson nano TF卡镜像复制

    很重要的第一点 xff0c TF卡一定要进行格式化 xff0c 再进行其他操作 1 使用USB xff12 xff10 2 在win10无法将TF卡格式化成FAT32时 xff0c 使用DiskGenius xff0c 将TF卡格式化成FA
  • C++里数组名+1和数组名的地址+1的区别

    C C 43 43 里面的数组名字会退化为指针 xff0c 所以数组名a实际指的是数组的第一个元素的地址 而数组名作为指针来讲有特殊性 xff0c 它正在它所指向的内存区域中 xff0c amp a的值和a的数值是相同的 xff08 可以输
  • AD软件之模块化原理图

    首先我们创建两个原理图文件 然后我们在Sheet2 SchDoc里放置一个页面符并双击绿色的方框 选择目标文件 我们选择我们刚才创建的Sheet4 SchDoc 然后在 视图 gt 面板 gt Navigator选项 里点一下交互式导航 就
  • c语言中判断一个字符串是否包含另一个字符串

    1 使用库函数 string h strstr函数 函数名 strstr 功 能 在串中查找指定字符串的第一次出现 用 法 char strstr char str1 char str2 说明 xff1a 返回指向第一次出现str2位置的指
  • TCP协议-握手与挥手

    认识TCP协议 TCP全称为 传输控制协议 xff0c 这是传输层的一个协议 xff0c 对数据的传输进行一个详细的控制 特点 xff1a 面向字节流安全可靠面向连接 TCP协议段格式 源端口号与目的端口号 xff1a 这里与UDP的一样
  • C语言volatile的作用及使用场景介绍

    简介 volatile 先从基础的知识说起吧 xff0c 这样也有个来龙去脉 我们都知道 xff0c 程序运行后 xff0c 程序的数据都会被从磁盘加载到内存里面 xff08 主存 xff09 而当局部的指令被执行的时候 xff0c 内存中
  • SNMPv3报文

    相应的数字表示 xff08 对象标识符OID xff0c 唯一标识一个MIB对象 xff09 为 xff1a 1 3 6 1 2 1 4 3 图2 MIB树结构 当网络管理协议在报文中使用MIB变量时 xff0c 每个变量名后还要加一个后缀
  • 详解C语言中volatile关键字

    volatile提醒编译器它后面所定义的变量随时都有可能改变 xff0c 因此编译后的程序每次需要存储或读取这个变量的时候 xff0c 都会直接从变量地址中读取数据 如 果没有volatile关键字 xff0c 则编译器可能优化读取和存储
  • EtherCAT从站学习笔记——2.4通信模式

    在实际的控制系统中 xff0c 应用程序之间一般有两种类型的数据交换形式 xff1a 时间关键数据 time critical 和非时间关键数据 non time critial 时间关键表示特定的动作必须在确定的时间内完成或处理 xff0
  • 在linux下利用ls命令进行模糊查找

    如上图 xff0c 我们当前路径下有三个文件 xff0c 分别为helloworld c以及helloworld和1 c xff0c 直接输入命令ls则显示所有文件 xff0c 我们可以利用ls 加 的方向进行模糊查找 输入ls 目录名 形
  • 树莓派第一次开机自动连接WIFI(不用显示屏方法)

    当我们把树莓派系统镜像烧录到SD卡之后 xff0c 我们在windows看到的TF卡变成了空间很小的名为boot的盘 xff0c 我们在此目录下新建一个名为wpa supplicant conf空白文件 xff0c 并在其中加入以下代码 c
  • linux交叉编译时报错 libfreetype.so: file not recognized: File format not recognized

    root 64 ubuntu home linuxsystemcode 04th print info arm none linux gnueabi gcc finput charset 61 GBK o example1 example1
  • 神经网络epoch和batch的粗浅理解

    关于神经网络epoch和batch的理解 理解粗浅 xff0c 仅为个人想法 xff0c 提前感谢指正 epoch 一个epoch代表全部数据进入网络一次 xff0c 这个时候 xff0c 整个网络结构只对这批数据全部走完一次 xff0c