1. 程式人生 > >機器學習9:“Hello World” of deep learning

機器學習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,梯度下降方法以及層數獲得最好的效果