Keras一些常用的API總結
阿新 • • 發佈:2018-08-16
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總結