深度學習1
阿新 • • 發佈:2019-01-11
文章目錄
啟用函式
啟用函式(activation function):將輸入訊號的總和轉換為輸出訊號。
階躍函式
python程式碼實現:
def step_function(x):
y = x > 0
return y.astype(np.int )
對NumPy陣列進行不等號運算後 ,陣列的各個元素生成一個布林型陣列。
astype()方法轉換NumPy陣列的型別,陣列y的元素型別從布林型轉換為int型。
sigmoid 函式
sigmoid 函式數學公式:
python程式碼實現:
def sigmoid(x):
return 1 / (1 + np.exp(-x))
ReLU函式
ReLU:Rectified Linear Unit
sigmoid 函式數學公式:
python程式碼實現:
def relu(x):
return np.maximum(0, x)
三層神經網路的實現
3層神經網路:
輸入層(第0 層)有2 個神經元,
第1 個隱藏層(第1 層)有3 個神經元,
第2 個隱藏層(第2 層)有2 個神經元,
輸出層(第3 層)有2 個神經元。
神經網路符號含義
各層間訊號傳遞的實現
神經元“1”表示偏置,其右下角的索引號只有一個。這是因為前一層的偏置神經元(神經元“1”)只有一個。
用數學式表示
,通過加權訊號和偏置的和按如下方式進行計算
使用矩陣的乘法運算,則可以將第1層的加權和表示成下面的式子
其中 、 、 、 、如下所示。
, , ,
表示隱藏層的加權和(加權訊號和偏置的總和)
表示啟用函式轉換後的訊號
表示啟用函式,這裡使用sigmoid 函式
這裡使用identity_function()恆等函式作為輸出層的啟用函式,記為 。
三層網路python程式碼實現
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def identity_function(x):
return x
def init_network():
network = {}
network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
network['b1'] = np.array([0.1, 0.2, 0.3])
network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5]