1. 程式人生 > >Keras一些常用的API總結

Keras一些常用的API總結

amp 猜想 奇怪 交叉 回調 batch target n) 暫時

使用了一段時間的tensorflow,並且花費了比較大的精力學習了《實戰google深度學習框架》這本書,發現純粹使用tensorflow是比較繁瑣的,所以抽時間學一下keras的內容,以後使用tensorflow和keras混編的方式做實驗,在易用性和靈活性兩方面取得一些折中,學習了tensorflow和基礎的機器學習知識後,熟悉keras的難度並非很大。

# Dense表示全連接層,unit是神經元數目,一般來說僅對參數矩陣進行正則化,按照機器學習的傳統,bias是不懲罰的,另外,此處的activity_regularizer很奇怪,為什麽要添加輸出懲罰,後續理解後添加,參數約束尚未學習,待更新
keras.layers.core.Dense(units, activation=None, use_bias=True, kernel_initializer=‘glorot_uniform‘, bias_initializer=‘zeros‘, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
#激活函數,tanh,sigmoid,relu等
keras.layers.core.Activation(activation)
#一定程度上可以減輕過擬合,目前見過的基本上只給出一個rate就行了
keras.layers.core.Dropout(rate, noise_shape=None, seed=None)
#平鋪,lenet5模型中有此操作,實際上reshape可以代替這個層
keras.layers.core.Flatten()
#註意keras中往往不給出batch的大小,所以此處的target_shape往往是三維數據Height,Width,Channel
keras.layers.core.Reshape(target_shape)
#filters為卷積核個數,也就是輸出通道數,kernel_size提供HW即可,比如3x3,dilation_rate和空洞卷積有關,目前還沒有學完,待更新
keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding=‘valid‘, data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer=‘glorot_uniform‘, bias_initializer=‘zeros‘, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
#轉置卷積,又叫反卷積或者分數滑動卷積,可以認為是輸入先每兩個像素之間補stride-1個0.然後根據情況在外圈補0,之後正常卷積的過程,FCN等許多論文中都使用了反卷積操作
keras.layers.convolutional.Conv2DTranspose(filters, kernel_size, strides=(1, 1), padding=‘valid‘, data_format=None, activation=None, use_bias=True, kernel_initializer=‘glorot_uniform‘, bias_initializer=‘zeros‘, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
#最大池化層,基本上都是用2x2池化,畢竟2x2池化已經丟失了75%信息了
keras.layers.pooling.MaxPooling2D(pool_size=(2, 2), strides=None, padding=‘valid‘, data_format=None)
#平均池化層,幾乎沒怎麽看到,絕大多數還是最大池化層
keras.layers.pooling.AveragePooling2D(pool_size=(2, 2), strides=None, padding=‘valid‘, data_format=None)
#損失函數,我目前經常看到的是softmax交叉熵和最小方差損失,Hinge損失目前還沒用過,其余損失函數沒見過,暫時不看
categorical_crossentropy,mse,hinge
#優化器,使用optimizer.SGD()類似用法獲取一個優化器,很汗顏一直沒有讀這些算法的實現,明天補,明天會更新算法原理
SGD,RMSprop,Adagrad,Adadelta,Adam,Adamax,Nadam,TFOptimizer
#編譯model.complie,我猜想是類似tensorflow中sess.run(tf.global_variables_initializer())操作,激活計算圖用的
#開始進行訓練,給定訓練集輸入,輸出,批的大小batch,訓練的輪數epochs,callback回調函數列表,給與了我們進行一些自定義過程的自由,validation_split給出驗證集比例
#一般來說訓練集:驗證集:測試集=6:2:2是比較好的,此處給0.33就可以了,默認shuffle,打亂數據,sample_weight暫時不太懂,待更新
fit(self, x, y, batch_size=32, epochs=10, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0)
#看一看模型在測試集的表現
score=evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None)
# 進行一次前向傳播完成一次預測
predict(self, x, batch_size=32, verbose=0)

Keras一些常用的API總結