三種引數初始化方法:
zero initialization:將輸入引數初始化為0
random initialization:隨機初始化輸入引數,權重w初始化的值較大
he initialization:在一定範圍內隨即初始化權重w值
zero initialization實現**:
for l in range(1, l):
parameters['w' + str(l)] = np.zeros((layers_dims[l], layers_dims[l-1]))
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))
訓練結果是cost函式不下降,一層中的每個神經元學習的內容都一樣,導致無法打破對稱性。為了打破對稱性,w的值需要隨機初始化,b的值則可以初始化為0.
random initialization實現**:
for l in range(1, l):
parameters['w' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l-1]) * 10
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))
權重w隨機初始化為較大的值,b初始化為0,這會導致cost函式的收斂速度變慢,也有可能引起梯度消失/梯度**等問題
he initialization實現**:
for l in range(1, l + 1):
parameters['w' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l-1]) * np.sqrt(2/layers_dims[l-1])
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))
對於relu啟用函式,he initialization效果好
機器學習,深度學習,神經網路,深度神經網路
先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...
深度學習 深度神經網路
神經網路是由乙個個神經元相互連線並按層次排列構成的,深度神經網路是有任意層的神經網路,這裡的深度是指層次的多,而不是神經元數量的多。有任意層,那麼就要有乙個迴圈來負責遍歷每一層進行計算。所以深度神經網路的計算形式,就必須要適應這個迴圈結構。我們先來說說神經元吧 對於多神經元神經網路,其實也是一樣的。...
神經網路和深度學習 淺層神經網路
乙個淺層神經網路示意圖 如圖所示,表示乙個單隱層的網路結構。這裡主要需要注意的是,層與層之間引數矩陣的規格大小 隱藏層和輸出層之間 由上面我們可以總結出,在神經網路中,我們以相鄰兩層為觀測物件,前面一層作為輸入,後面一層作為輸出,兩層之間的w引數矩陣大小為 n out,nin b引數矩陣大小為 n ...