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

posted @ 2016-04-03 23:06  MrYu4  阅读(25)  评论(0编辑  收藏  举报