【语义分割】深度学习中常见概念回顾(全大白话解释,一读就能懂!)_epoch/iter-程序员宅基地

技术标签: 深度学习  

记录一下常见的术语!

一、epoch、batch size和iteration

1.1 Epoch

定义:一个epoch指代所有的数据送入网络中完成一次前向计算及反向传播的过程。简而言之:训练集中的全部样本/数据 “喂” 给网络一次,就叫做一个epoch

补充1:在训练时,将所有数据迭代训练一次是不够的,需要反复多次才能拟合收敛,即:需要把数据集多放入网络训练几次。简而言之:看书看一遍是不够的的,需要多看几遍,神经网络也是。

补充2: 由于一个epoch常常太大,一次全 “喂” 给网络,计算机无法负荷,我们会将它分成几个较小的batch,即引出了batch size这个概念

1.2 Batch Size

定义:所谓Batch就是每次送入网络中训练的一部分数据,而Batch Size就是每个batch中训练样本的数量。其取值通常为:2^N,如:32、64、128…

作用: Batch Size 如果过小,训练数据就收敛困难;如果过大,虽然相对处理速度加快,但所需内存容量增加。使用中需要根据计算机性能和训练次数之间平衡Batch Size,其中一个epoch中的训练次数又叫做:iteration,迭代

1.3 Iteration

定义: iterations就是完成一次epoch所需的batch个数。

举个例子:我们有2000个数据,分成4个batch,那么batch size就是500。运行所有的数据进行训练,完成1个epoch,需要进行4次iterations。

1.4 其他版本

定义
(1)batchsize:批大小,即:每次训练在训练集中取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;

举个例子:训练集有1000个样本,batchsize=10,则训练完一次整个样本集需要:
iteration = 1000 / 10 = 100 次
epoch = 1 个

参考

  1. 深度学习中的Epoch,Batchsize,Iterations,都是什么鬼?
  2. 机器学习基本概念:batch_size、epoch、 iteration
  3. 神经网络中epoch、batch size和iteration的区别
  4. 神经网络中Epoch、Iteration、Batchsize相关理解和说明
  5. 【调参炼丹】 Batch_size和Epoch_size

二、Softmax

简而言之,一个主要用于多分类求概率的函数,常应用:
(1)用于神经网络输出层
(2)和argmax函数合作用

示意图如下:在这里插入图片描述
参考小白都能看懂的softmax详解

三、激活函数和卷积核

3.1 激活函数

概念:对数据进行映射。
(1)微观理解:若网络不使用激活函数,则只能处理线性数据;使用激活函数后,网络可处理非线性数据。如Relu函数,把直线(线性)“掰弯”(非线性):
在这里插入图片描述
(2)宏观理解:使用激活函数,便于更好的提取图像特征


更多激活函数介绍详见:

  1. CNN中激活函数,优化器,损失函数的选择
  2. 常用激活函数(激励函数)理解与总结

3.2 卷积核

单一神经元模型如下图:
在这里插入图片描述
其中,
卷积核的大小
(1)大小是提前预设的,常见的是3x3,但为什么是3x3,并没有理论依据,通过大量的实践测试得来的,这个大小最好用。
(2)还有一个特殊的是1x1的,一般做降维或者线性变换的时候用

卷积核内的每个参数值(权重)
(1)核中每个参数的值是通过训练得来的,训练网络的过程,也就是训练这些参数的过程
(2)核中的权重(参数:W和b),最初都被初始化为随机值,最终不断优化训练网络、不断调整权重。
(3)在使用训练数据对网络进行BP训练时,W和b的值都会往局部最优的方向更新,直至算法收敛。所以卷积神经网络中的卷积核是从训练数据中学习得来的。(详情参考请点击

那么,卷积核中的权重值是怎样进行修正的呢?用到了什么技术呢?请参考下述的:损失函数和优化器。

四、损失函数和优化器

背景介绍
深度神经网络中的的损失用来度量我们的模型得到的的预测值和数据真实值之间差距,也是一个用来衡量我们训练出来的模型泛化能力好坏的重要指标。(损失函数)

对模型进行优化的最终目的是尽可能地在不过拟合的情况下降低损失值。(优化器)

两者关系
用损失函数计算出损失值,基于损失值优化模型参数(卷积核参数)

4.1 损失函数

常见的有:均方误差函数、均方根误差函数、平均绝对误差函数等等。

详细的损失函数介绍,请参考

  1. 损失函数和优化函数
  2. 深度学习笔记(五)—损失函数与优化器

4.2 优化器

优化器的鼻祖是:梯度下降(Gradient Descent,GD),其涉及:梯度和学习率
GD是参数优化的基础方法,虽然已广泛应用,但是其自身存在许多不足,所以在其基础上改进的优化函数也非常多,比如:梯度下降最常见的三种变形 BGD,SGD,MBGD。

详细的优化器介绍,请参考

  1. 深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
  2. 损失函数和优化函数
  3. 深度学习笔记(五)—损失函数与优化器

五、上采样

常见的上采样方法有:双线性插值、转置卷积、上采样(unsampling)和上池化(unpooling)。其中前两种方法较为常见,后两种用得较少。

详情参考:上采样方法原理简介

六、归一化

6.1 归一化

概念
传统机器学习中归一化也叫做标准化,其一般是将数据映射到指定的范围,用于去除不同维度数据的量纲以及量纲单位。如:有的特征取值范围[10<sup>9</sup>,10<sup>99</sup>],另一些特征取值范围为[0,01, 0.1],通过归一化可将这些不同取值范围的特征值映射到相同的范围,如将上述两个范围映射到[-1, 1]之间。

作用
数据标准化让机器学习模型看到的不同取值范围的样本彼此之间更加形似,有助于模型的学习与对新数据的泛化。

6.2 批归一化

概念:Batch Normalization,批归一化和普通的数据归一化类似,是将分散的数据统一到某一特定区间的一种方法,也是优化神经网络的一种方法。

应用
(1)在数据预处理时进行批归一化,可以加速网络收敛;
(2)在神经网络中进行批归一化,即:在网络的每一次变换之后进行数据归一化,也可加速网路收敛。为什么要在训练过程中批归一化?答:训练过程中均值和方差随时间发生变化,需重新对数据进行批归一化,这样网络每一层看到的数据都属于同一分布
(3)批标准化一般放在:卷积层后,即:先卷积,后批标准化,再卷积,再批标准化

作用
(1)批标准化解决的问题是梯度消失和梯度爆炸
(2)批标准化是一种训练优化方法
(3)具有正则化效果,可抑制过拟合
(4)可提高模型的泛化能力。因为:它可使同一神经网络的每一层看到的数据都属于同一分布范围,无论什么范围的数据过来,都能很好的处理。
(5)允许更高的学习速率从而加速网络收敛
(6)批标准化有助于梯度传播,因此可基于批标准化创建更深的网络,如:ResNet50、Inception V3和Xception等。

其他
(1)BatchNormalization层通常在卷积层或密集连接层后使用,tf 2.0中对应函数:Tf.keras.layers.Batchnormalization()

七、过拟合问题解决

当网络训练后出现过拟合,如:训练集上准确率上升,验证集上准确率恒定,可采用:
(1)dropout层
(2)l1、l2正则化
解决过拟合问题。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_29047129/article/details/106962711

智能推荐

Android实现部分文字可点击及变色_spannablestring clickspan 变色-程序员宅基地

文章浏览阅读1.4k次。可以使用SpannableString和ClickableSpan: TextView userAgreement = findViewById(R.id.user_agreement); SpannableString agreement = new SpannableString("Agree to the User Agreement and Privac..._spannablestring clickspan 变色

ollvm的ida trace操作笔记_ida trace 脚本-程序员宅基地

文章浏览阅读1.6k次。1.启动顺序操作记录1.把android_server push到手机里2.chmod 777 android_server3.adbforward tcp:11678 tcp:116784.ida->debugger->attach->arm-androddebugger5.再按f9把程序跑起来6.file->script_file->选择script.py加载ida脚本,成功后会有日志7.然后点击Debugger->breaklist里可以看到我们的断_ida trace 脚本

Mac M1 搭建 React Native 环境_mac 配置 react native 的打包环境-程序员宅基地

文章浏览阅读3.4k次。Mac M1 搭建 React Native 环境环境安装可以参考对照官方文档,本文针对M1芯片目前未完全适配情况下的方案,算是临时解决方案,不具有时效性。你需要自行准备的依赖:Xcode >10、Node >v12、Npm、Yarn、ruby、git更改编译环境首先要做的是进入 访达>应用程序>实用工具>右键 终端.app 显示简介>使用Rosetta打开勾选这一点极其重要,如果你使用的为其他终端工具,请勾选此选项,有关ffi的兼容问题,这只是临时解决方案_mac 配置 react native 的打包环境

SE壳C#程序-CrackMe-爆破 By:凉游浅笔深画眉 / Net7Cracker-程序员宅基地

文章浏览阅读644次。【文章标题】: 【SE壳C#程序-CrackMe-爆破】文字视频记录!【文章作者】: 凉游浅笔深画眉【软件名称】: CM区好冷清,我来发一个吧!小小草莓【下载地址】: http://www.52pojie.cn/thread-243089-1-1.html【加壳方式】: SE壳【使用工具】: OD+WinHex+CFF Explorer【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大..._凉游浅笔画深眉是啥

安卓ttf格式的字体包_锤子科技定制字体 | Smartisan T黑-程序员宅基地

文章浏览阅读2k次。Smartisan·T黑2019年10月31日19:30分在北京工业大学奥林匹克体育馆举行的坚果手机2019新品发布会上,Smartisan OS产品经理朱海舟正式发布了Smartisan OS 7.0。随着全新的Smartisan OS 7.0一同亮相的还有锤子科技向方正字库订制的系统UI字体:Smartisan T黑(锤子T黑)。锤子T黑有着几乎完美的特质:灰度均衡、重心统一、中宫内..._smartisan t黑

Java中extends与implements使用方法_implements在java中的格式-程序员宅基地

文章浏览阅读4.8k次,点赞4次,收藏6次。一.extends关键字 extends是实现(单)继承(一个类)的关键字,通过使用extends 来显式地指明当前类继承的父类。只要那个类不是声明为final或者那个类定义为abstract的就能继承。其基本声明格式如下: [修饰符] class 子类名 extends 父类名{ 类体 }_implements在java中的格式

随便推点

webGl学习-程序员宅基地

文章浏览阅读127次。开个新坑,不知道能不能做完学习地址:mdn地址浏览器支持范围:支持范围首先是创建一个容器,与canvas的canvas.getContext('2d')相似let canvas = document.getElementById('myCanvas');let gl = canvas.getContext('webgl');_webgl学习

基于大数据的音乐推荐系统的设计与实现-程序员宅基地

文章浏览阅读1.7w次,点赞20次,收藏328次。系统提供的功能有,音乐管理:管理员可以添加删除音乐,音乐查找:用户可以在系统中自行查找想要听的歌曲,音乐推荐:系统在收集了用户的行为数据之后为用户个性化推荐音乐,用户管理:管理员可以对用户进行删除,评论管理:管理员可以对评论进行删除,音乐下载:用户可以自行下载个人喜欢分歌曲。选择数据源要确定数据源数据是否可靠真实,要避免爬取音乐平台发布的虚伪的音乐数据,如不存在的歌唱家、专辑、音乐等。通过分析基于大数据的音乐推荐系统,即音乐推荐需要哪些数据,详细了解推荐机制,搞清楚这些数据需要被处理为什么格式。_基于大数据的音乐推荐系统的设计与实现

Nginx反向代理缓存服务器搭建-程序员宅基地

文章浏览阅读672次。Nginx反向代理代理服务可简单的分为正向代理和反向代理:正向代理: 用于代理内部网络对Internet的连接请求(如×××/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端:反向代理: 与正向代理相反,如果局域网向Internet提供..._o /usr/local/server/ngx_cache_purge-2.3/config was found error: failed to ru

layui用table.render加载数据 用table.reload重载里面的数据---解决table.render重新加载闪动的问题_layui table.reload 闪退-程序员宅基地

文章浏览阅读2.7w次,点赞4次,收藏30次。今天在用layui 展示数据的时候,首先想到了table.render这个插件进行数据的展示,因为数据要实时刷新,说到实时刷新,你最低要三秒刷新一次表格的数据吧!!!一开始写了个定时把table.render放到定时函数里面,三秒执行一次函数,那么问题来了,虽然效果是实现了,但这是重新加载表格啊,三秒闪一次,别说是用户了,我都看不下去了,闪的眼疼,就想有没有只让数据重新加载,表格不动。终于功夫不负..._layui table.reload 闪退

Ubuntu系统突然进不去了_ubuntu开机无法进入系统-程序员宅基地

文章浏览阅读8.7k次,点赞5次,收藏37次。ubuntu系统突然进不去了!怎么办?_ubuntu开机无法进入系统

exe->startsap_startsap command not found-程序员宅基地

文章浏览阅读2.4k次。#!/bin/sh -#--------------------------------------------------------------------------version(){ echo '# @(#) $Id: //bas/742_REL/src/krn/startscripts/startsap#2 $'}## NAME : startsap or stopsa_startsap command not found