最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對比分析BN和dropout在預測和訓練時區(qū)別

 更新時間:2022年05月09日 15:47:59   作者:微笑sun  
這篇文章主要為大家介紹了對比分析BN和dropout在預測和訓練時區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Batch Normalization和Dropout是深度學習模型中常用的結構。

但BN和dropout在訓練和測試時使用卻不相同。

Batch Normalization

BN在訓練時是在每個batch上計算均值和方差來進行歸一化,每個batch的樣本量都不大,所以每次計算出來的均值和方差就存在差異。預測時一般傳入一個樣本,所以不存在歸一化,其次哪怕是預測一個batch,但batch計算出來的均值和方差是偏離總體樣本的,所以通常是通過滑動平均結合訓練時所有batch的均值和方差來得到一個總體均值和方差。

以tensorflow代碼實現為例:

def bn_layer(self, inputs, training, name='bn', moving_decay=0.9, eps=1e-5):
        # 獲取輸入維度并判斷是否匹配卷積層(4)或者全連接層(2)
        shape = inputs.shape
        param_shape = shape[-1]
        with tf.variable_scope(name):
            # 聲明BN中唯一需要學習的兩個參數,y=gamma*x+beta
            gamma = tf.get_variable('gamma', param_shape, initializer=tf.constant_initializer(1))
            beta  = tf.get_variable('beat', param_shape, initializer=tf.constant_initializer(0))
            # 計算當前整個batch的均值與方差
            axes = list(range(len(shape)-1))
            batch_mean, batch_var = tf.nn.moments(inputs , axes, name='moments')
            # 采用滑動平均更新均值與方差
            ema = tf.train.ExponentialMovingAverage(moving_decay, name="ema")
            def mean_var_with_update():
                ema_apply_op = ema.apply([batch_mean, batch_var])
                with tf.control_dependencies([ema_apply_op]):           
                    return tf.identity(batch_mean), tf.identity(batch_var)
            # 訓練時,更新均值與方差,測試時使用之前最后一次保存的均值與方差
            mean, var = tf.cond(tf.equal(training,True), mean_var_with_update,
                    lambda:(ema.average(batch_mean), ema.average(batch_var)))
            # 最后執(zhí)行batch normalization
            return tf.nn.batch_normalization(inputs ,mean, var, beta, gamma, eps)

training參數可以通過tf.placeholder傳入,這樣就可以控制訓練和預測時training的值。

self.training = tf.placeholder(tf.bool, name="training")

Dropout

Dropout在訓練時會隨機丟棄一些神經元,這樣會導致輸出的結果變小。而預測時往往關閉dropout,保證預測結果的一致性(不關閉dropout可能同一個輸入會得到不同的輸出,不過輸出會服從某一分布。另外有些情況下可以不關閉dropout,比如文本生成下,不關閉會增大輸出的多樣性)。

為了對齊Dropout訓練和預測的結果,通常有兩種做法,假設dropout rate = 0.2。一種是訓練時不做處理,預測時輸出乘以(1 - dropout rate)。另一種是訓練時留下的神經元除以(1 - dropout rate),預測時不做處理。以tensorflow為例。

x = tf.nn.dropout(x, self.keep_prob)
self.keep_prob = tf.placeholder(tf.float32, name="keep_prob")

tf.nn.dropout就是采用了第二種做法,訓練時除以(1 - dropout rate),源碼如下:

binary_tensor = math_ops.floor(random_tensor)
 ret = math_ops.div(x, keep_prob) * binary_tensor
 if not context.executing_eagerly():
   ret.set_shape(x.get_shape())
 return ret

binary_tensor就是一個mask tensor,即里面的值由0或1組成。keep_prob = 1 - dropout rate。

以上就是對比分析BN和dropout在預測和訓練時區(qū)別的詳細內容,更多關于BN與dropout預測訓練對比的資料請關注腳本之家其它相關文章!

相關文章

  • python模塊離線安裝方式

    python模塊離線安裝方式

    這篇文章主要介紹了python模塊離線安裝方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python的這些庫,你知道多少?

    Python的這些庫,你知道多少?

    最近整理了一些好用的庫但是只是初級介紹,如果大家用得到的話還請自己到官網上查一下,因為東西太多我一 一介紹的話可能不太現實,需要的朋友可以參考下
    2021-06-06
  • Python中的遞歸函數使用詳解

    Python中的遞歸函數使用詳解

    這篇文章主要介紹了Python中的遞歸函數使用詳解,遞歸函數是指某個函數調用自己或者調用其他函數后再次調用自己,由于不能無限嵌套調用,所以某個遞歸函數一定存在至少兩個分支,一個是退出嵌套,不再直接或者間接調用自己;另外一個則是繼續(xù)嵌套,需要的朋友可以參考下
    2023-12-12
  • python替換文件中的某幾行操作技巧

    python替換文件中的某幾行操作技巧

    這篇文章主要介紹了python替換文件中的某幾行,本文介紹使用python正則庫打開文件并替換文件中某幾行數據的可行方法,需要的朋友可以參考下
    2023-09-09
  • Python中的XML庫4Suite Server的介紹

    Python中的XML庫4Suite Server的介紹

    這篇文章主要介紹了Python中的XML庫4Suite Server,來自于IBM官方網站,需要的朋友可以參考下
    2015-04-04
  • 簡單實現Python爬取網絡圖片

    簡單實現Python爬取網絡圖片

    這篇文章主要教大家如何簡單實現Python爬取網絡圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • WxPython開發(fā)之列表數據的自定義打印處理

    WxPython開發(fā)之列表數據的自定義打印處理

    這篇文章主要為大家詳細介紹了如何利用WxPython內置的打印數據組件實現列表數據的自定義打印處理,以及對記錄進行分頁等常規(guī)操作,需要的可以參考下
    2025-03-03
  • python中的列表推導淺析

    python中的列表推導淺析

    這篇文章主要介紹了python中的列表推導,需要的朋友可以參考下
    2014-04-04
  • 淺談Django QuerySet對象(模型.objects)的常用方法

    淺談Django QuerySet對象(模型.objects)的常用方法

    這篇文章主要介紹了淺談Django QuerySet對象(模型.objects)的常用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python學習筆記之字典,元組,布爾類型和讀寫文件

    Python學習筆記之字典,元組,布爾類型和讀寫文件

    這篇文章主要為大家詳細介紹了Python的字典,元組,布爾類型和讀寫文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論

饶阳县| 繁峙县| 阿拉善左旗| 石景山区| 朝阳市| 新乡县| 泰和县| 五原县| 牟定县| 麻阳| 岳普湖县| 湟中县| 体育| 泗阳县| 林芝县| 大石桥市| 湘潭市| 绥德县| 常宁市| 繁昌县| 肃北| 昌江| 中山市| 岑巩县| 凭祥市| 灯塔市| 柳江县| 桃园市| 英超| 揭东县| 五指山市| 沂水县| 隆德县| 六安市| 五河县| 嘉兴市| 尼玛县| 鹤壁市| 晋州市| 准格尔旗| 响水县|