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

發佈了44 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章