Keras主要包括14個模塊,本文主要對Models、layers、Initializations、Activations、Objectives、Optimizers、Preprocessing、metrics共計8個模塊分別展開介紹,并通過一個簡單的Bp神經網絡說明各個模塊的作用。?
1. Model?
包:keras.models?
這是Keras中最主要的一個模塊,用于對各個組件進行組裝?
eg:
- from keras.models import Sequential
- model=Sequential() #初始化模型
- model.add(...) #可使用add方法組裝組件
2. layers?
包:keras.layers?
該模塊主要用于生成神經網絡層,包含多種類型,如Core layers、Convolutional layers等?
eg:
- from keras.layers import Dense #Dense表示Bp層
- model.add(Dense(input_dim=3,output_dim=5)) #加入隱含層
3. Initializations?
包:keras.initializations?
該模塊主要負責對模型參數(權重)進行初始化,初始化方法包括:uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal等?
詳細說明:http://keras.io/initializations/?
eg:
model.add(Dense(input_dim=3,output_dim=5,init='uniform')) #加入帶初始化(uniform)的隱含層
4. Activations?
包:keras.activations、keras.layers.advanced_activations(新激活函數)?
該模塊主要負責為神經層附加激活函數,如linear、sigmoid、hard_sigmoid、tanh、softplus、relu、 softplus以及LeakyReLU等比較新的激活函數?
詳細說明:http://keras.io/activations/?
eg:
model.add(Dense(input_dim=3,output_dim=5,activation='sigmoid')) 加入帶激活函數(sigmoid)的隱含層
Equal to:
- model.add(Dense(input_dim=3,output_dim=5))
- model.add(Activation('sigmoid'))
5. Objectives?
包:keras.objectives?
該模塊主要負責為神經網絡附加損失函數,即目標函數。如mean_squared_error,mean_absolute_error ,squared_hinge,hinge,binary_crossentropy,categorical_crossentropy等,其中binary_crossentropy,categorical_crossentropy是指logloss?
注:目標函數的設定是在模型編譯階段?
詳細說明:http://keras.io/objectives/?
eg:
model.compile(loss='binary_crossentropy', optimizer='sgd') #loss是指目標函數
6. Optimizers?
包:keras.optimizers?
該模塊主要負責設定神經網絡的優化方法,如sgd。?
注:優化函數的設定是在模型編譯階段?
詳細說明:http://keras.io/optimizers/?
eg:
model.compile(loss='binary_crossentropy', optimizer='sgd') #optimizer是指優化方法
7. Preprocessing?
包:keras.preprocessing.(image\sequence\text)?
數據預處理模塊,不過本人目前尚未用過?
8. metrics?
包:keras.metrics?
與sklearn中metrics包基本相同,主要包含一些如binary_accuracy、mae、mse等的評價方法?
eg:
- predict=model.predict_classes(test_x) #輸出預測結果
- keras.metrics.binary_accuracy(test_y,predict) #計算預測精度
9. Bp 神經網絡的簡單實現
- from keras.models import Sequential #導入模型
- from keras.layers import Dense #導入bp層
- train_x,train_y #訓練集
- test_x,text_y #測試集
- model=Sequential() #初始化模型
- model.add(Dense(input_dim=3,output_dim=3,activation='sigmoid',init='uniform'))) #添加一個隱含層,注:只是第一個隱含層需指定input_dim
- model.add(Dense(1,activation='sigmoid')) #添加輸出層
- model.compile(loss='binary_crossentropy', optimizer='sgd') # 編譯,指定目標函數與優化方法
- model.fit(train_x,train_y ) # 模型訓練
- model.evaluate(test_x,text_y ) #模型測試