機器學習9:“Hello World” of deep learning
一、框架
1、TensorFlow或者theano比較靈活,可以理解成微分器,你可以用來實現Gradient Decent,但用起來實際上是有難度的;
2、keras其實是TensorFlow或theano的API介面,可以幫助你快速做一個模型,現在TensorFlow預設使用Keras介面,theano也可以安裝使用keras;
3、keras有很多現成的介面幫助你,你同樣可以有靈活性寫自己的函式;
4、keras的documentation:http://keras.io/;
5、使用keras更像是在搭積木;
二、“Hello World”
1、資料準備
2、模型構建
model = Sequential()建立一個model;
add新增“層”,Dense裡面是輸入和輸出的維數,只有第一層用輸入,中間層預設上一層的輸出為輸入;
每一層新增一個啟用函式Activation,啟用函式可以有多種選擇;
3、模型評價(Loss Function與優化方法)
使用compile函式,這裡選擇了CrossEntropy作為損失函式,adam作為梯度優化方法
4、訓練
x_train是訓練資料,y_train是標籤型別,batch_size是將資料分成多塊,表示每塊的大小,nb_epoch表示重複調引數的次數,這裡不是每個塊裡面的調參次數,每個塊裡面依然調很多次引數,這裡是重複所有塊的次數。
資料表示如下(資料輸入前需要轉化成相應形式):
x_train輸入10000張28*28圖片,那麼資料維數是10000*784
y_train輸入10000張圖片的標籤,每一列代表一個標籤,圖中第一個標籤是{0,0,0,0,0,1,0,0,0,0},代表數字“5”
batch_size的大小設定有所講究,對於GPU來說,設定太小的話,batch數量就多,就要分很多次計算,運算時間會比較長,設定太大的話,每個batch裡面一次調整很多引數可能會出錯。
下圖是兩個batch分開計算與合併起來計算的速度說明:
5、模型的儲存與測試
三、調引數
模型需要調整Loss Function,梯度下降方法以及層數獲得最好的效果