BP神經網絡,正向傳播求損失,反向傳播求誤差。
caffe的fine-tuning: 就是把現成的模型略加修改然後再作少量training,主要用於樣本數量不足的情形。
激活層點進點出,逐點計算,維度不會改變
pytorch最重要是把class完成(網絡結構、前向運算),然後定義損失函數、優化器,for循環計算loss。
content loss 歐式距離
tf.placeholder
tf.Variable
op(操作符/算子)
圖,session中跑流程
softmax就是如果某一個zj大過其他z,那這個映射的分量就逼近於1,其他就逼近於0,主要應用就是多分類,sigmoid函數只能分兩類,而softmax能分多類,softmax是sigmoid的擴展。
損失函數(hinge loss/支持向量機損失、交叉熵損失)
線性分類器的理解:模板匹配
神經元感知器
激勵層
端到端指的是輸入是原始數據,輸出是最後的結果,原來輸入端不是直接的原始數據,而是在原始數據中提取的特徵,這一點在圖像問題上尤爲突出,因爲圖像像素數太多,數據維度高,會產生維度災難,所以原來一個思路是手工提取圖像的一些關鍵特徵,這實際就是就一個降維的過程。
端到端強調中間不用手工干預
做了一些前置處理的,就不是end-to-end了。比如去噪、平滑、顯著性提取、分割、去色等等。還比如提取過特徵,將特徵作爲輸入的,也不是end-to-end,比如提取個SIFT、RGB值什麼的。
將原始圖片直接作爲輸入的,將物理系統需要的調節參數作爲輸出的,纔是端到端。(例如將車輛速度、轉角作爲輸出)
深度學習中的Batch Normalization
BN就是在神經網絡的訓練過程中對每層的輸入數據加一個標準化處理。
BN通過規範化輸入數據改變數據分佈,在前傳過程中消除梯度彌散。
比如你要研究一個新的模型,你是在前人的模型基礎上新增加了一些組件,別人也基本都是在這個模型上進行修改,那這個模型就叫做baseline model——基準模型。聽名字就能聽出來,就是你自己模型的一個基準,一個基本的框架,模型再複雜,最根本的框架是差不多的。比如序列標註任務baseline基本是BILSTM+CRF,大多數人都是在這基礎上增改,加些Char-CNN,Attention機制之類的。
神經網絡單隱層可以逼近任何連續函數單隱層交 多隱層or
softmax函數
數據格式(data_format)
目前主要有兩種方式來表示張量:
a) th模式或channels_first模式,Theano和caffe使用此模式。
b)tf模式或channels_last模式,TensorFlow使用此模式。
下面舉例說明兩種模式的區別:
對於100張RGB3通道的16×32(高爲16寬爲32)彩色圖,
th表示方式:(100,3,16,32)
tf表示方式:(100,16,32,3)
唯一的區別就是表示通道個數3的位置不一樣。
張量(tensor),可以看作是向量、矩陣的自然推廣,用來表示廣泛的數據類型。張量的階數也叫維度。
0階張量,即標量,是一個數。
1階張量,即向量,一組有序排列的數
2階張量,即矩陣,一組向量有序的排列起來
3階張量,即立方體,一組矩陣上下排列起來
4階張量......
依次類推
重點:關於維度的理解
假如有一個10長度的列表,那麼我們橫向看有10個數字,也可以叫做10維度,縱向看只能看到1個數字,那麼就叫1維度。注意這個區別有助於理解Keras或者神經網絡中計算時出現的維度問題。
Dense(500,input_shape=(784,))
a)Dense層屬於網絡層-->常用層中的一個層
b) 500表示輸出的維度,完整的輸出表示:(*,500):即輸出任意個500維的數據流。但是在參數中只寫維度就可以了,比較具體輸出多少個是有輸入確定的。換個說法,Dense的輸出其實是個N×500的矩陣。
c)input_shape(784,) 表示輸入維度是784(28×28),完整的輸入表示:(*,784):即輸入N個784維度的數據
shenji