書-Deep Learning 用Python 進行深度學習的基礎理論實作
◎非線性函數
◎ReLU函數
◎多維陣列運算
◎矩陣的乘積
非線性函數
上一篇有講到'階梯函數'和'sigmoid函數',都是屬於非線性函數,線性函數的輸出必須是輸入的'倍數'才有可能達成線性(直線)。
神經網路必須使用非線性的函數,第2篇我有畫張圖,就可以很清楚了,用線性函數會讓這個神經網路變得沒有意義。因為不管再多層,在圖形中分布的位置只能'是'和'否'。
ReLU函數
雖然sigmoid很早之前就在使用,但是現在'ReLU(Rectified Linear Unit)'的使用率提高了,特點是輸入超過'0'就輸出,'0'以下就輸出0。
公式:
多維陣列運算
只要會了'numpy'的多維陣列運算,就可以更有效的去使用神經網路。
前面我們都是使用一維的陣列,可以用'np.ndim()'查看陣列維度,'a.shape'就是查看陣列中有多少維度&元素。
這個是個二維的陣列,由3個2維陣列所組成,行跟列最好使用英文的因為別的國家'行->列','列->行',所以用英文比較不會有這個問題。
矩陣的乘機
兩個二維陣列相乘,使用np.dot()。
就是row去乘與column。
不同矩陣也是可以相乘的,我們來看底下的例子,a是(3,2),b是(2,3),
只要 a的第二個數字等於b的第一個數字就可以相乘。
下面這個例子,dot(a,b)是可以的,因為a的第2個數字等於b第1個數字,但是交換之後就會出現錯誤,因為b的第2個數字是'3'並不等於a的第1個數字'2'。
不管是幾維陣列只要符合我上面講的,都是可以相乘的。
留言列表