從零開始深度學習0419——CNN基本知識

0419

B站深度學習視頻https://www.bilibili.com/video/BV1ht411i7Ld?p=1

  12-17  總結

 

 

神經網絡泛化能力一定要強

 

激活函數與損失函數

https://www.jianshu.com/p/e5bcdd932d05

激活函數的作用

線性模型的表達能力不夠,激活函數增加神經網絡模型的非線性,提升神經網絡模型表達能力(數據往往線性不可分 )。

幾種激活函數:

Sigmoid:常用來做二分類任務,會造成梯度消失

Tanh:sigmod函數曲線相近。兩個函數輸入很大或是很小時,輸出幾乎平滑,梯度很小,不利於權重更新。不同的是輸出區間,tanh的輸出區間是在(-1,1)之間,函數以0爲中心。比sigmoid 好。一般二分類問題中,隱藏層用tanh函數,輸出層用sigmod函數。

Relu:f(x)=max(0,x)

Softmax:常用在多分類神經網絡輸出

Leaky relu

Elu

Maxout

幾種損失函數

二次代價函數

交叉熵代價函數

 

 

 

梯度消失

使用sigmoid激活函數,會造成梯度消失的問題。

在輸入x大於10後,計算sigmoid的斜率會約等於0,而更新w是一個累乘的過程,就會使前面的w值計算結果無限接近與0,造成梯度消失問題

 

 

可視化神經網絡演示網頁

https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html

 

 

正則化,提高神經網絡的泛化能力

 

神經元越多,越能表示複雜的模型,但是過擬合的風險也越高

 

 

數據預處理

原始數據—> 以0 爲中心化 -à歸一化處理    保證所有數據都是在(0,1)之間

 

Numpy.mean

https://blog.csdn.net/lilong117194/article/details/78397329

mean()函數功能:求取均值 
經常操作的參數爲axis,以m * n矩陣舉例:

axis 不設置值,對 m*n 個數求均值,返回一個實數

axis = 0:固定列,壓縮行,對各列求均值,返回 1* n 矩陣

axis =1 :固定行,壓縮列,對各行求均值,返回 m *1 矩陣

 

numpy.std

https://blog.csdn.net/chixujohnny/article/details/51106481

計算矩陣標準差

axis=0計算每一列的標準差

axis=1計算每一行的標準差

 

 

權重初始化

權重初始化的時候,不能全是1,或者全是2等等,因爲無論是幾這樣反向傳播回來的時候都是朝1個方向去更新的。相當於這個神經網絡迭代太慢了或者太弱了

 

通常要進行高斯初始化或者隨機初始化。

偏置b 初始化一般是0或者1   對結果影響很小

 

 

Droup-Out

爲了防止過擬合

每次隨機選擇神經元。  

假如設定 droup-out率 保留率 60%  就是每次隨機選擇60%的神經元去玩前向傳播+反向傳播

迭代次數去彌補神經元少的問題

 

 

 

 

Anaconda

anaconda search  -t conda tensorflow  查找tensorflow  有哪些可安裝的庫

anaconda show …..    搜索出安裝這個庫 需要什麼命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章