16.04.03
一、读取数组长度
1、可以用代码(以一维数组int a[5]为例)
sizeof(a)/sizeof(a[0])
也就是
sizeof(数组指针)/sizeof(单位元素指针);
2、针对多维的情况(以3维数组int a[5][6][7]为例)
sizeof(a)/sizeof(a[0])//第一维的长度,也就是5
sizeof(a[0])/sizeof(a[0][0])//第二维的长度,也就是6
sizeof(a[0][0])/sizeof(a[0][0][0])//第三维的长度,就是7
如果理解以上代码的话,下面的代码应该一看就懂了
sizeof(a)/sizeof(a[0][0][0]) == 5 * 6 * 7 == 210;
sizeof(a)/sizeof(a[0][0]) == 5 * 6 == 30;
sizeof(a[0])/sizeof(a[0][0][0]) == 6 * 7 == 42;
二、随机数
1、随机数种子
计算机产生随机数需要设置种子,否则产生的随机数会是相同的。定义随机数种子方法如下
srand((unsigned)time(NULL));
2、C++中random和rand函数
Random(int n):randomize,random 不是ANSI C标准,random函数不能在GCC,VC等编译器下编译通过Rand()函数则可以通过GCC,VC等编译器
二、深度学习
(注:英(用)语(有)好(道)的同学最好来到这个网站下载研读论文http://www.cs.toronto.edu/~hinton/ ,里面pdf的链接左键可以打开在线阅读,当然下载的话右键有个下载啥啥啥的,点他就好了)
1、深度学习的理解
深度学习(deep learning)是机器学习的一种,在2006年Geoffrey Hinton等在《科学》上发表的文章提出,基于深信度网(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。[1],
2、浅度学习(shallow learning)存在的一些问题:
(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;
(2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);
(3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习;[2]
在搜索资料的时候发现有贴吧网友指出以上三点有误
1、越往下未必会越小,也有少量可能性会暴增
2、收敛到局部最小只是网络规模的问题,而不是BP算法的问题,而当时的硬件水平无法支持足够大的网络规模
3、对BP算法做变形,如autoencoder在90年代就被发明出来,可以做无监督学习 Hinton有个PPT专门讲这些讹误[3]
引用资料:
[1]百度百科 http://baike.baidu.com/link?url=aBUioE8EYG9kBToQiSrcoPbxPfZeuyRAgRrZ-PE4YB19mmZEuOKmIwf8e3UwE-gYsF2IrIhit0Qg53kPUvBlnq
[2]Deep Learning 学习笔记整理笔记 http://blog.csdn.net/zouxy09/article/details/8775518
[3]百度贴吧http://tieba.baidu.com/p/3349640872
本文来自博客园,作者:MrYu4,转载请注明原文链接:https://www.cnblogs.com/MrYU4/p/15778906.html