-
2021-10-04 15:39:09
前言
本文介绍了为什么初始化很重要,总结了常用的几种初始化方法:全零或等值初始化、正态初始化、均匀初始化、Xavier初始化、He初始化和Pre-trained初始化,并介绍了几个还活跃的初始化方向:数据相关初始化、稀疏权重矩阵和随机正交矩阵初始化。
本文来自公众号CV技术指南的技术总结系列
欢迎关注CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。
为什么初始化很重要
不正确初始化的权重会导致梯度消失或爆炸问题,从而对训练过程产生负面影响。
对于梯度消失问题,权重更新很小,导致收敛速度变慢——这使得损失函数的优化变慢,在最坏的情况下,可能会阻止网络完全收敛。相反,使用过大的权重进行初始化可能会导致在前向传播或反向传播过程中梯度值爆炸。
常见的初始化方法
1. 全零或等值初始化
由于初始化的值全都相同,每个神经元学到的东西也相同,将导致“对称性(Symmetry)”问题。
2. 正态初始化(Normal Initialization)
均值为零,标准差设置一个小值。
这样的做好的好处就是有相同的偏差,权重有正有负。比较合理。
例:2012年AlexNet使用“均值为零、标准差设置为0.01、偏差为1的高斯(正常)噪声进行初始化”的初始化方法。然而,这种正常的随机初始化方法不适用于训练非常深的网络,尤其是那些使用 ReLU激活函数的网络,因为之前提到的梯度消失和爆炸问题。
3. 均匀初始化(Uniform Initialization)
均匀分布的区间通常为【-1/sqrt(fan_in),1/sqrt(fan_in)】
其中fan_in表示输入神经元的数量,fan_out表示输出神经元的数量。
4. Xavier Initialization
来自论文《Understanding the difficulty of training deep feedforward neural networks》
根据sigmoid函数图像的特点
如果初始化值很小,那么随着层数的传递,方差就会趋于0,此时输入值也变得越来越小,在sigmoid上就是在0附近,接近于线性,失去了非线性。
如果初始值很大,那么随着层数的传递,方差会迅速增加,此时输入值变得很大,而sigmoid在大输入值写倒数趋近于0,反向传播时会遇到梯度消失的问题。
针对这个问题,Xavier 和 Bengio提出了“Xavier”初始化,它在初始化权重时考虑了网络的大小(输入和输出单元的数量)。这种方法通过使权重与前一层中单元数的平方根成反比来确保权重保持在合理的值范围内。
Xavier 的初始化有两种变体。
Xavier Normal:正态分布的均值为0、方差为sqrt( 2/(fan_in + fan_out) )。
Xavier Uniform:均匀分布的区间为【-sqrt( 6/(fan_in + fan_out)) , sqrt( 6/(fan_in + fan_out)) 】。
Xavier 初始化适用于使用tanh、sigmoid为激活函数的网络。
5. He Initialization
来自论文《Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification》
激活函数的选择最终在决定初始化方法的有效性方面发挥着重要作用。激活函数是可微的,并将非线性特性引入神经网络,这对于解决机器学习和深度学习旨在解决的复杂任务至关重要。ReLU和leaky ReLU是常用的激活函数,因为它们对消失/爆炸梯度问题相对鲁棒。
Xavier在tanh函数上表现可以,但对 ReLU 等激活函数效果不好,何凯明引入了一种更鲁棒的权重初始化方法--He Initialization。
He Initialization也有两种变体:
He Normal:正态分布的均值为0、方差为sqrt( 2/fan_in )。
He Uniform:均匀分布的区间为【-sqrt( 6/fan_in) , sqrt(6/fan_in) 】
He Initialization适用于使用ReLU、Leaky ReLU这样的非线性激活函数的网络。
He Initialization和Xavier Initialization 两种方法都使用类似的理论分析:它们为从中提取初始参数的分布找到了很好的方差。该方差适用于所使用的激活函数,并且在不明确考虑分布类型的情况下导出。
图来自何凯明的论文。
论文展示了何凯明改进的初始化策略(红色)如何比 (P)ReLU 的 Xavier 方法(蓝色)更快地降低错误率。
有关 Xavier 和 He 初始化方法的证明,请参阅 Pierre Ouannes 的文章《如何初始化深度神经网络?Xavier 和 Kaiming 初始化》。
6. Pre-trained
使用预训练的权重作为初始化,相比于其它初始化,收敛速度更快,起点更好。
除了以上的初始化方法外,还包括有LeCun Initialization。方法跟He Initialization和Xavier Initialization类似,但基本没怎么看见用,这里就不列出来了。
权重初始化仍然是一个活跃的研究领域。出现了几个有趣的研究项目,包括数据相关初始化、稀疏权重矩阵和随机正交矩阵初始化。
数据相关初始化
论文:Data-dependent Initializations of Convolutional Neural Networks
地址:https://arxiv.org/abs/1511.06856
稀疏权重矩阵初始化
地址:https://openai.com/blog/block-sparse-gpu-kernels/
随机正交矩阵初始化
论文:Exact solutions to the nonlinear dynamics of learning in deep linear neural networks
地址:https://arxiv.org/abs/1312.6120
参考资料
1. https://medium.com/comet-ml/selecting-the-right-weight-initialization-for-your-deep-neural-network-780e20671b22
2. https://medium.com/analytics-vidhya/weights-initialization-in-neural-network-d962ac438bdb
3. Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification He, K. et al. (2015)
4. Understanding the difficulty of training deep feedforward neural networks
欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。
在公众号中回复关键字 “技术总结”可获取公众号原创技术总结文章的汇总pdf。
其它文章
资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库
PyTorch 中的 ModuleList 和 Sequential: 区别和使用场景
使用 Ray 将 PyTorch 模型加载速度提高 340 倍
经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷
更多相关内容 -
论文研究-一种求解TSP初始化种群问题的方法.pdf
2019-09-11 06:18:15以自动化立体仓库安排出入库作业顺序优化作为TSP研究问题,通过Matlab仿真计算,将该算法和邻域法生成的初始种群进行对比分析,并分别用该算法和随机生成的初始种群作为遗传算法的初始种群进行计算。证明了该算法可... -
电脑提示应用程序正常初始化失败如何解决?
2020-12-22 12:19:02很多时候我们用电脑打开程序时,会提示“应用程序正常初始化(0xc0000142)失败”的问题,遇到这样的问题一时也不知道怎么解决好。这对很多用户来说是个很烦的事,不知道如何解决?那下面就和大家说一下如何解决应用...很多时候我们用电脑打开程序时,会提示“应用程序正常初始化(0xc0000142)失败”的问题,遇到这样的问题一时也不知道怎么解决好。这对很多用户来说是个很烦的事,不知道如何解决?那下面就和大家说一下如何解决应用程序正常初始化失败的问题。
具体步骤如下:
1、软件冲突,至少是两个或者两个以上的软件之间吧,卸载近期安装的软件,可以使冲突一方退避,解决软件冲突之后,“应用程序正常初始化失败”的问题也将迎刃而解。
2、病毒造成这样的问题,用户可以安装杀毒软件杀毒试试看,如果不能解决就直接重新安装系统,新系统就不存在这样的问题了,一般都是病毒破坏了系统文件造成的。
3、如果找不到原因,用户可以尝试开机按F8不动到高级选项出现再松手,选“最近一次的正确配置”回车修复,有时候这样也能解决。
4、用系统修复光盘或者工具,尝试修复系统,系统修复完毕,此问题也许能够解决。
5、有时候硬件问题也会导致此问题的发生,自己可以把内存重新拔插一下,并且清理一下内存的金手指,主板灰尘也清理一遍。
如何解决应用程序正常初始化失败的问题就介绍到这里了。如果你们在使用电脑过程中有遇到这样的问题,可以按照上述的步骤去操作,这样就可以帮你解决问题了。希望对遇到同样问题的用户能有所帮助,不妨去试一下!
-
endnote初始化数据库支持_干货-关于endnote的使用心得
2020-10-22 02:56:131-5 另一种是单个文献的导入,方法如上述一样,在选择File---Import---File 时需要注意的是Import Option中有很多的选项,如果是导入PDF,则直接选择PDF后点击Import后导入即可,如果是网上引用模式下载的格式,则...码字不易,祝点赞的心想事成
------------------------------------
近有小伙伴问我关于endnote在科研过程中的一些使用方法,所以就自己平时科研过程中的一些使用心得和技巧来简单分享给大家,希望此篇文章能够更好的助攻大家的科研工作,撒花~~~
一个高效的科研辅助工具对于节约大家时间和提高工作效率真的有事半功倍的作用,本人也是在科研研究的过程中走了不少弯路,从刚开始的科研小白到现在的还是科研小白。。。路漫漫啊,大家一起相互学习~~~
我用的版本是endnote x8, 其实x7用法也差不多,x9还没试过,所以就以x8版本跟大家详细介绍一下endnote在整个科研过程中起到的重要作用。
一、文献导入及分类
1-1 首先,打开endnote X8软件, 点击File---new, 新建一个library,如下图:选择保存路径,这里自动保存为两个文件,分别是endnote模式下的enl格式和对应的date夹;可以把这两个文件copy后直接在另一台安装了endnote的电脑上直接打开,方便台式到笔记本的便携切换;这里不建议保存到C盘,因为随着科研的进行,文献越来越多,存入数据越来越大,占C盘空间
1-2 建立好library之后就是文献的导入,这里有两种方式,一是点击File---Import---File or Folder,File是单个文献的导入,Folder是整个文件夹的导入。这里我常用的方法是先在各大学术网站上搜索相关领域文献,比较常用的就是Web of Science以及ACS, RSC, Wiley等等,(材料科研狗常逛网站)。Web of Science的优势是涵盖各大数据库,基本上只要是接收的文章都能快速搜到,ACS的优势是直接在搜索界面就可以点击查看文章标题下面的各种插图,图控的我就经常浏览该网站,方便省时~~~跑题了,前期文献查阅完成之后,下载需要进一步阅读的文献PDF,关于文献的下载,也是有若干的便捷下载路径,有需要的同学我后期可以再写一篇关于文献的快速下载的文章。
1-3 我一般会把所有下载的PDF一次性导入到endnote里面,则选择如下图所示方式,找到PDF保存的文件夹,直接Import导入。
导入之后的样子是这样滴~
1-4 导入完成之后你需要进一步进行阅读分类,点击每个文献后侧会出来对应的框框,点击Reference 则会出来相应的文献信息,如作者名称,文章DOI,文章卷号,时间,页码等等;点击PDF就会出来全文PDF,点击链接则可以加入文章的其他PDF,如加入文章的支持信息的PDF等。
1-5 文献阅读归类,建立Group 和Group Set 。点击my group右键选择创立group或group set, group set相当于是一个大的文件夹,group则为大文件夹下的子文件夹,选择导入的文献直接拖入到建立的子文件夹即可完成文献归类操作。
1-5 另一种是单个文献的导入,方法如上述一样,在选择File---Import---File 时需要注意的是Import Option中有很多的选项,如果是导入PDF,则直接选择PDF后点击Import后导入即可,如果是网上引用模式下载的格式,则对应选择endnote import 或者ISI-CE(此针对是在谷歌学术,百度学术或者web of science 上引用的模式,导入之后你会发现只有文章标题,卷号,DOI等等信息,但是没有全文PDF,这时你要是需要阅读全文,就需要点击链接再导入下载的PDF)
二、文献阅读及引用
打开全文PDF阅读,菜单栏会有对应的放大缩小,文本注释,高亮显示,下划线等等。主要bug我觉得就是颜色单一,高亮貌似只有黄色。。。
在文献的所有列表里面你还可以手动搜索相关文献,调取方便,可以快速查找
接下来就是文献的插入,打开Word,点击endnote X8,选择插入的文献style,一般常见期刊这里面都有,可以点击select another style 选择你需要的期刊格式即可。这里建议Word而不是WPS,因为我在用的过程中发现WPS跟endnote不兼用,可能是我的版本的问题或者其他问题我就卸载了WPS。。。
选择好之后,就可以返回到endnote软件,点击要插入的文献,之后再点击下图所示的insert citation即可插入到对应Word文档。
endnote的优势不仅在于你在写文章的过程中参考文献的删减和替换都能自动编号,同时在科研工作过程中,还具有强大的整理分类标注的功能,贯穿科研开始到论文完结的整个过程。
以上,整个流程就结束啦~~~
-
HAL库驱动详解.pdf
2020-01-02 09:59:30STM32CubeMX,一种图形软件配置工具,允许生成C初始化 使用图形向导编写代码。 每个系列都提供了一个全面的嵌入式软件平台(例如STM32CubeF4 STM32F4系列) STM32Cube HAL是STM32抽象层嵌入式软件,可确保... -
C语言的数组初始化
2021-01-16 13:44:57这是非常基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定以前了解过,但如今,我不敢确定,...第七章新东西太多,看的我目不暇接,所以在网上找了些样例看,当中就有一个样例中出现了这种语句:...wchar_t...这是非常基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定以前了解过,但如今,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停反复.所以从今天開始,我会比較具体的纪录这些比較小的知识点,事实上还是有不少有意思的地方的.
写这篇文章的起因在于<>第七章新东西太多,看的我目不暇接,所以在网上找了些样例看,当中就有一个样例中出现了这种语句:
...
wchar_t wname[128]=...{0};
charcname[256]=...{0};
...
我感兴趣的是:
1.这样的赋值的结果.
2.这样的形式是否符合标准编码规则?
我找到了例如以下资料,可能有助于对这个知识点的掌握.
/**//*
初始化值的个数可少于数组元素个数.当初始化值的个数少于数组元素个数时,前面的按序初始化对应值, 后面的初始化为0(全局或静态数组)或为不确定值(局部数组).
*/
我相信上面的资料是C和C++语言的标准规范,但实际编译器处理时,可能会和规范有所不同.由于编译器原则上要遵从语言规范,但对于局部数组的不确定值究竟是多少,怎么处理,编译器就能够灵活处理.我測试了三种编译器,事实上编译器赋予的值是固定的,都是0.
/**//*
一直以为 int a[256]={0};是把a的全部元素初始化为0,int a[256]={1};是把a全部的元素初始化为1.
调试的时查看内存发现不是那么一回事,翻了一下《The C++ Programming Language》总算有定论。PDF的居然不然复制,就把它这章翻译了,例如以下
5.2.1 数组初始化
数组能够用一个列值来初始化,比如
int v1[] ={1,2,3,4};
char v2[]={'a','b','c',0};
当数组定义时没有指定大小,当初始化採用列表初始化了,那么数组的大小由初始化时列表元素个数决定。所以v1和v2分别为 int[4] 和char[4]类型。假设明白指定了数组大小,当在初始化时指定的元素个数超过这个大小就会产生错误。比如:
char v3[2] ={'a','b',0}; //错误:太多的初始化值了
char v3[3] ={'a','b',0}; //正确
假设初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为 0。比如
int v5[8]={1,2,3,4};
等价于
int v5[8]={1,2,3,4,0,0,0,0};
注意没有例如以下形式的数组赋值:
void f()
{
v4={'c','d',0}; //错误:不是数组赋值
}
假设你想这种复制的话,请使用 vector(16章第三节) 或者 valarray(22章第四节)。
字符数组能够方便地採用字符串直接初始化(參考第五章 2.2小节)
译注: 就是 这样啦 char alpha []="abcdefghijklmn";
*/
以下来看一个样例:
#include
intarray1[5]=...{1,2,3};
staticintarray2[5]=...{1};
voidmain()
...{
intarr1[5]=...{2};
staticintarr2[5]=...{1,2};
intn;
cout<
for(n=0; n<5; n++)
cout<
cout<
for(n=0; n<5; n++)
cout<
cout<
for(n=0; n<5; n++)
cout<
cout<
for(n=0; n<5; n++)
cout<
cout<
}
在这个样例中,全局和静态数组都按语言规范要求被初始化为0,可是局部数组并没有向前面所说的为不确定值,以下是用gcc,VC6.0,tuborC++分别编译的结果(注意gcc用g++编译c++文件,gcc不会链接库的):
/**//*
GCC 可同一时候用来编译 C 程序和 C++ 程序。一般来说,C 编译器通过源文件的后缀名来推断是 C 程序还是 C++ 程序。在 Linux 中,C 源文件的后缀名为 .c,而 C++ 源文件的后缀名为 .C 或 .cpp。
可是,gcc 命令仅仅能编译 C++ 源文件,而不能自己主动和 C++ 程序使用的库连接。因此,通常使用 g++ 命令来完毕 C++ 程序的编译和连接,该程序会自己主动调用 gcc 实现编译。
*/
GCC:
VC6.0:
TurboC++
这说明了对局部数组没有初始化的元素的值,这几种编译器都将其设置为0.可是,假设假设不正确数组进行初始化,即在定义的同一时候没实用列表初始化,那么局部数组的值就取决于编译器而对程序猿来说就是不可预料的了.有时间能够測试一下各个编译器,只是在vc中是0xcc.所以对局部数组的初始化要特别小心.可是全局的数组和静态数组还是会被正确的赋于0值的.
此外,这个blog地址值得收藏,在http://blog.vckbase.com/ 排行榜的blog都值得细致看.
在VC的安装盘的/VC98/CRT下能够看到vc自带的C/C++库的源码.
-
QT在子线程中使用QAxWidget需要初始化COM的问题
2015-10-08 17:27:27最近碰到一个在子线程中使用QAxWidget不成功的问题,问题显示如下: CoCreateInstance failure (尚未调用 CoInitialize。) QAxBase::setControl: requested control Excel.Application could not be instantiated ... -
从头开始写STM32F103C8T6驱动库(二)——编写系统初始化程序,配置时钟树
2022-01-21 10:00:38从头开始写STM32F103C8T6驱动库(二)——编写系统初始化程序,配置时钟树 文章目录系列文章目录1.重写SystemInit函数介绍STM32启动方式介绍系统时钟树编写配置时钟树代码2.关闭JTAG-DP,启用SW-DP3.测试 1.重写... -
C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理
2018-06-27 11:06:06C语言中,数组初始化的方式主要有三种:1、声明时,使用 {0} 初始化;2、使用memset;3、用for循环赋值。那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码:[cpp]view plaincopy#defineARRAY_SIZE_MAX(1*... -
精美地形象化图像,视频和PDF文件! (由@pittleorg提供)[元:图像,照片,视频,文档,pdf,相册,画廊,...
2021-02-03 12:59:09怎么获得 1.安装依赖项: 和 如果您的项目使用来管理其依赖性,则安装最简单方法是在Podfile添加以下Podfile : ...2.将PTShowcaseViewController目录复制到您自己的项目中 ...如果遇到问题,请在“ Examples目录中查看 -
耗时n年,38页《数据仓库知识体系.pdf》(数据岗位必备)
2021-09-15 12:07:18文末下载PDF 文章很长,前言一定要看 拥有本篇文章,意味着你拥有一本完善的书籍,本篇文章整理了数据仓库领域,几乎所有的知识点,文章内容主要来源于以下几个方面: 源于「数据仓库交流群」资深数据仓库工程师的... -
PCLint错误码解析.pdf
2021-02-03 17:03:17PCLint是 GIMPELSOFTWARE 公司研发的 C/C++ 软件代码静态分析...PCLint 不但能够对程式进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针连同冗余的代码,还能够有效地提出许多程序在 -
C语言丨数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理
2021-02-01 01:24:57C语言中,数组初始化的方式主要有三种:1、声明时,使用 {0} 初始化;2、使用memset;3、用for循环赋值。那么,这三种方法的原理以及效率如何呢?请看下面的测试代码:#define ARRAY_SIZE_MAX(1*1024*1024)void ... -
Adobe PDF 虚拟打印机Acrobat Distiller 9.0 错误的解决
2022-04-10 22:51:53“PDFX4 2008 JPN.joboptions”中出现 Adobe PDF 设置文件读错误: /CheckCompliance out of range 网上找了半天没解决成,无意中发现在设置中修改提示超出范围,%ProgramData%\Adobe\Adobe PDF\Settings目录中找到... -
snappy:PHP库允许从url或html页面生成缩略图,快照或PDF。 wkhtmltopdfwkhtmltoimage的包装器
2021-04-01 13:46:32活泼的 Snappy是一个PHP库,允许从url或html页面生成缩略图,快照或PDF。...初始化 <?php require __DIR__ . '/vendor/autoload.php' ; use Knp \ Snappy \ Pdf ; $ snappy = new Pdf ( '/usr/loc -
论文研究-多约束选址—路径问题的改进混合遗传算法研究.pdf
2019-07-22 20:11:52选址—路径问题(LRP)同时解决设施选址和车辆路径问题, 使物流系统总成本达到最小, 在集成化物流配送网络规划中具有重要意义。针对带仓库容量约束和路径容量约束的选址—路径(CLRP)问题, 提出了一种结合模拟退火算法... -
svn版本管理软件——初始化配置
2017-09-01 16:13:44文件版本说明 ... 添加svn版本库的创建 钟鑫 0.1.2 2016.12.15 svn服务器搭建 钟鑫 0.2.1 2016.12.31 svn windows端添加日常管理代码 钟鑫 0.3.0 2017.01.02 添加svn windows端打补丁 钟鑫 -
数组的初始化
2013-05-19 10:59:24这是很基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定曾经了解过,但... 写这篇文章的起因在于>第七章新东西太多,看的我目不暇接,所以在网上找了些例子看,其中就有一个例子中出现了这样的语句: ... -
论文研究-区域性应急物资储备库选址-配给模型与算法.pdf
2019-09-10 14:28:44在算法流程设计中,对于高维稀疏矩阵编码且具有强约束限制的选址—配给问题,初始化过程中采取搜索空间限定法来规避违约,并设计了定位变异算子以此生成子代。算例分析结果表明该算法性能较好,可以有效求解多点设施... -
论文研究-替代性需求下一类产品的品种选择与库存控制的联合决策.pdf
2019-09-20 15:03:43并对部分替代系数进行了敏感性分析, 结果表明,该模型的可行性和适用性较好,由该模型给出的品种选择方案和库存控制方案比初始策略下的总利润增加了17.6%, 当替代效应超过毛利的影响时或产品部分替代系数波动增大时,... -
利用Python在pdf文档中寻找某些词出现的页码
2021-02-04 02:46:30要研究pdf文件的页码,首先要考虑这个文件的种类。pdf可能是一本书的电子版,可能是一份简历、可能是由Word、PPT或其他文档导出的……如果不是一本书,通常页面内容里是没有页码的;如果是一本书,虽然有页码,但是... -
集成TRIZ的机加夹具方案公理化设计.pdf
2019-09-20 11:01:34在构建机加夹具多级实例库的基础上,设计了机加夹具功能 结构分解与映射算法,将夹具方案生成过程转化为基于功能需求检索多级夹具实例的过程,从而可快速生成机加夹具初始方案,之后运用AD独立公理对初始方案进行... -
python标准库中文版-Python3标准库 PDF 中文完整版
2020-10-29 20:56:46前言[0第0]1章 文本 11.1 string:文本常量和模板 11.1.1 函数 11.1.2 模板 21.1.3 高级模板 31.1.4 Formatter 51.1.5 常量 51.2 textwrap:格式化文本段落 61.2.1 示例数据 61.2.2 填充段落 71.2.3 去除现有的缩进 ... -
android使用Itext库生成PDF文件
2021-08-02 11:01:50android生成PDF文件之itext7概述导包使用介绍初始化基础控件使用Text使用方式Table的使用经验总结 概述 关于android端动态生成PDF文档的方案我也找了很多第三方的库,其中很多库对于安卓的支持都不是很好,最后还是... -
C# 语言规范 版本5.0中文.pdf
2021-11-21 09:17:23型安全 (type-safe) 的语言设计则避免了读取未初始化的变量、数组索引超出边界或执行未经检查的类型 强制转换等情形。 C# 具有一个同一类型系统 (unified type system)。所有 C# 类型(包括诸如 int 和 double 之类... -
论文研究-一种摄像机采集图像的二值化算法.pdf
2019-09-07 12:38:23针对自动化立体仓库固定货架系统拣选路径优化问题的特点,分析并设计了一种新型混合遗传算法。构造初始种群时加入了一种补充算法,遗传操作采用了一种受贪婪算法启发的交叉算子和倒位变异算子,显著改善了原有遗传算法... -
Swift5.2编程语言.pdf
2020-05-17 14:45:06变量一定是在使用前初始化的; 数组索引会检查越界错误; 整数会检查溢出; 可选项保证了 nil 值会显式处理; 内存自动管理; 错误处理允许从意外错误中恢复控制。 Swift 代码为大部分现代硬件编译和优化。语法和基本库都...