Machine Learning-Andrew Ng 課程第四周——非線性假設 & Neural Network
阿新 • • 發佈:2018-12-12
1. 影象作為輸入時的訓練
之前我們處理的輸入都是一些標量,比如房子的面積、臥室數量、腫瘤的體積等等,但在實際工程應用中,很多輸入比這複雜許多,比如說影象。
在此次程式設計作業中用到了手寫資料集,每個影象都是,共有5000張圖片,在實際操作時,所有圖片都是以向量形式輸入的,的圖片就變成一個400維的向量,而所用的引數也就是401個(加上),也就是說,每個引數對應一個畫素——,所以處理高維輸入並沒有想象中的那麼複雜。
2. 關於神經網路中Hidden Layer在程式設計時的注意事項
這是我在程式設計作業中犯的一個錯誤,在輸入傳遞給Hidden Layer時,得用sigmoid函式將輸入的線性組合轉化為(0,1)之間的數。
X = [ones(size(X,1),1) X];
A_2 = sigmoid(X*Theta1');
A_2 = [ones(size(A_2,1),1) A_2];
[values, p] = max(A_2*Theta2',[],2);
第二行將輸入層()的線性組合用sigmoid函式處理,得到hidden layer的值.
3. Matlab中max()函式的用法
在作業中用到了max()函式,這裡列出兩個比較好用的功能: 1.
[values, indexs] = max(A) #返回矩陣A中每一列最大的值給values,每個值在該列的位置給indexes
例:
A = [1 2 3;6 5 4];
[values indexes] = max(A)
返回:
values =
6 5 4
indexes =
2 2 2
[values, indexs] = max(A, [], 2) #返回矩陣A中每一行最大的值給values,每個值在該行的位置給indexes
例:
A = [1 2 3;6 5 4];
[values indexes] = max(A, [], 2)
輸出:
values =
3
6
indexes =
3
1