深度学习中遇到的各种参数总结-程序员宅基地

技术标签: deep learning  深度学习  人工智能  

深度学习里面的各种参数做一个学习记录

提示:自己根据自己的理解写的,水平有限,仅供参考,如有错误,欢迎指正

1. batchsize,iteration,epoch

batchsize:批大小。在深度学习中,每次训练在训练集中一次性取batchsize个样本训练,举例子,就比如你在操场跑步比赛,一共200人参加,一共10个跑道,每次就10个一组的上,batchsize就是每次一组的10个人,一般大小设置为2的N次方,因为GPU的线程一般为2的N次方,GPU内部的并行计算效率最高。比如设置为64,128等。那怎么确定大小呢?
batch_size设的大,收敛得快,需要训练的次数少,准确率上升的也很稳定,但是实际使用起来精度不高;
batch_size设的小,收敛得慢,可能准确率来回震荡,因此需要把基础学习速率降低一些,但是实际使用起来精度较高。
可以根据实际情况多试几次,选一个合适的值。更多详情参考这里

iteration:迭代。1个iteration等于使用batchsize个样本训练一次。用跑步的例子来说,就是200除以10等于20,iteration就是20。
epoch:1个epoch等于使用训练集中的全部样本训练一次,epoch的值就是整个数据集被训练几次。你在操场跑步跑圈,一圈就是把全部样本训练一次,跑多少圈就是训练多少次。因为训练数据不是跑一圈就完了,那样结果很不好,要经过多轮的训练,结果才会比较好,一般epoch的大小也是根据实际情况。更多详情参考这里(英文版)

2. filter,kernel_size,stride,padding

代码如下(示例):

self.conv1_1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1)
self.conv1_2 = nn.Conv2d(64, 64, kernel_size=3, stride=1, padding=1)

filter:滤波器,也就是卷积核。
kernel_size:卷积核大小。卷积核一般为奇数。
stride:步长。每次卷积核做卷积时移动的距离。
padding:填充。padding参数有两项:valid | same,valid表示无填充,same表示有填充。
详情可参考这里

3. ReLU,sigmoid,softmax

ReLU:线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。
ReLU函数如下图所示:

ReLU函数
ReLU函数我们称为神经网络中的激活函数,激活函数作用。ReLU实现稀疏后的模型能够更好地挖掘相关特征,拟合训练数据。详情请看这里
我的理解是,ReLU函数相比于其他激活函数可以减小计算量,可以避免梯度消失,可以缓解过拟合问题。详情请看这里

sigmoid:sigmoid函数也叫Logistic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。在特征相差比较复杂或是相差不是特别大时效果比较好。Sigmoid作为激活函数有以下优缺点:
优点:平滑、易于求导。
缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。
Sigmoid函数由下列公式定义:

sigmoid函数

Sigmoid函数的图形如S曲线:更多详情请看

在这里插入图片描述

softmax:在数学,尤其是概率论和相关领域中,归一化指数函数,或称Softmax函数,是逻辑函数的一种推广。它能将一个含任意实数的K维向量z“压缩”到另一个K维实向量σ(z)中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。该函数多用于多分类问题中。比如MNIST手写数字辨识。详情请看

4. BatchNormal,Dropout,num_classes,mini_batch

BatchNormal: BatchNormal作用是把数据归一化,这样训练更快,因为把数据集都映射到原点周围了。详情请看
没有它之前,需要小心的调整学习率和权重初始化,但是有了BN可以放心的使用大学习率,但是使用了BN,就不用小心的调参了,较大的学习率极大的提高了学习速度,
Batchnorm本身上也是一种正则的方式,可以代替其他正则方式如dropout等
另外,个人认为,batchnorm降低了数据之间的绝对差异,有一个去相关的性质,更多的考虑相对差异性,因此在分类任务上具有更好的效果。
Dropout:dropout改变之前稠密网络中,权重统一学习,参数统一更新的模式,提出在每次训练迭代中,让网络中的部分参数得到学习,即部分参数得到更新,部分参数保持不更新。详情请看
num_classes:要分类的类别数,比如MNIST共有(0-9)10种类别。
mini_batch:当我们的数据很大时,理论上我们需要将所有的数据作为对象计算损失函数,然后去更新权重,可是这样会浪费很多时间。类比在做用户调查时,理论上我们要获得所有用户的评分再计算平均值,可这样也很浪费时间,但我们知道在调查中,可以用随机抽样的值来近似估计总体的值。于是,我们想要随机选择小批量的数据(Mini Batch)作为样本,来计算损失函数,然后当做总体训练数据的近似值。详情请看

5. receptive field

receptive filed:感知野。在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小。神经元之所以无法对原始图像的所有信息进行感知,是因为在这些网络结构中普遍使用卷积层和pooling层,在层与层之间均为局部相连(通过sliding filter)。神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着他可能蕴含更为全局、语义层次更高的特征;而值越小则表示其所包含的特征越趋向于局部和细节。因此感受野的值可以大致用来判断每一层的抽象层次。详情请看

后续补充。。。

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

智能推荐

Mybatis一对多、多对一、批量插入_mybatis一对多插入usegeneratedkeys-程序员宅基地

文章浏览阅读2.6w次,点赞14次,收藏57次。在项目开发中,我们有遇到的对象关系通常是复杂的,每个对象并不是单独的。比如学生和老师之间关系,一个老师有多个学生,每个学生会对应一个老师(这里的老师主要是班主任),这种关系其实就是一对多的关系。Mybatis在处理这种关系的时候,也是有自己的办法的。接下来就讲述一下在Mybatis中处理一对多关系的映射。1、先捋清楚学生和老师的ER模型以及数据库表数据库表中主要是在学生端的表中有一_mybatis一对多插入usegeneratedkeys

Unity shader 碎屏效果_unity玻璃碎掉的动画-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。 Shader "Unlit/BrokenScreen"{ Properties { _MainTex("Texture", 2D) = "white" {} _BumpTex("BumpTex", 2D) = "white" {} _satCount("satCount",Range(0,1)) = 0 _unity玻璃碎掉的动画

第三天 笔记-程序员宅基地

文章浏览阅读77次。fhs 文件系统层次化标准ll /bin可执行文件ls /bin可执行文件★★★cd /etc 文本的配置文件proc 进程索引文件里面不包含文件名block 块ls -i所有节点的信息★★★命令pwd:显示工作目录路径cd /dir01/dir02/dir03/ 绝对路径 [root@serv...

S5PV210开发与学习:1.1烧写系统:SD卡、fastboot、DNW刷机_s5pv210 sd卡刷机-程序员宅基地

文章浏览阅读1.1k次。1.开发板示意图2.刷系统就是利用刷机工具,向开发板中烧录预先编译好的系统镜像,使之在开发板上运行起来。//默认的启动命令设置x210 # printenvbootcmd=movi read kernel 30008000; movi read rootfs 30B00000 300000; bootm 30008000 30B00000mtdpart=80000 4..._s5pv210 sd卡刷机

apache ETag头信息泄露的漏洞整改_apache web server etag header信息泄露漏洞-程序员宅基地

文章浏览阅读4.2k次。apache ETag头信息泄露的漏洞绕了很多弯路,最后通过以下方式解决1.在apache2的httpd.conf配置 Header unset ETag FileETag none2.重启apache,发现启动会报错-“找不到header”。可能是没有header的mod,去apache的mods-available文件找“headers.load”,手动去mods-en..._apache web server etag header信息泄露漏洞

java面试基础篇-程序员宅基地

文章浏览阅读131次。反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能 够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

随便推点

日志分析查看——grep,sed,sort,awk运用_linux日志分析常用哪些命令?awk、grep,sed,wc-程序员宅基地

文章浏览阅读519次。概述 我们日常应用中都离不开日志。可以说日志是我们在排查问题的一个重要依据。但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了。于是,很有必要通过一些手段来高效地辅助你来快速的从日志中找到你要找的问题。本文通过一个从项目中衍生出来的例子从查找日志,筛选日志和统计日志3个方面层层递进来简述日志文件查看中一些有用的手段。(注_linux日志分析常用哪些命令?awk、grep,sed,wc

(整理Linux书签)——Vim命令的使用_vim 书签 操作-程序员宅基地

文章浏览阅读1.3k次。很久之前自己学习了一丢丢Linux命令,所以书签里放的杂乱无章的各种Linux知识,第一波整理::Vi是Linux的编辑器,visual interfaceVi存在三种模式,并且可以通过很多方式进行切换vim filename 打开文件,如果不存在就创建一个具有这样文件名的文件三种模式的切换在vi一个文件之后,默认进入vi的命令模式,即输入的每一个字符都表示一条命令,在_vim 书签 操作

Visual Studio 添加外部.cpp/.h文件_visual studio 新页面生成.cpp .h文件-程序员宅基地

文章浏览阅读8.8k次,点赞8次,收藏34次。1.右键“源文件”,点击“添加”-->“现有项”2.选择需要添加的文件,点击添加3.右键项目名称,点击“属性”4.选择“C/C++”下的“常规”5.点击“附加包含目录下”下的编辑,完成文件路径添加..._visual studio 新页面生成.cpp .h文件

【配置环境】在虚拟机的Ubuntu下安装VS Code并配置C/C++运行环境_vmware下ubuntu系统中安装vscode-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏26次。Ubuntu下VSCode安装和配置C/C++运行环境,保姆级详细!!!_vmware下ubuntu系统中安装vscode

Web背景铺满屏幕 属性:background-image_怎么webstrom背景铺满网页-程序员宅基地

文章浏览阅读605次。记录:学习web中背景铺满且固定位置。_怎么webstrom背景铺满网页

【模型制作】如何把模之屋的模型导入UE_模之屋的模型怎么导入blender-程序员宅基地

文章浏览阅读1.3k次,点赞11次,收藏8次。blender去官网下载,我下载的是此时最新版本3.6版本,如果上不了github,可以从这里下载插件:链接:https://pan.baidu.com/s/1FnEb5W_y8Wap3IVyydCqvQ?编辑-偏好设置-插件-安装,直接点击压缩包安装即可。(此步可以略过)点击骨骼,左上角点击姿态模式,(鼠标中键转动视角,shirf+鼠标中键移动视角),点击骨骼,按对应的快捷键检查骨骼。6,点击这个,取消勾选fix mmd(如果是mmd文件则不需要取消勾选),然后点击Fix Model。_模之屋的模型怎么导入blender