主頁 > 知識庫 > Pytorch 如何實現常用正則化

Pytorch 如何實現常用正則化

熱門標簽:開封語音外呼系統(tǒng)代理商 400電話辦理哪種 開封自動外呼系統(tǒng)怎么收費 電銷機器人的風險 河北防封卡電銷卡 天津電話機器人公司 地圖標注線上如何操作 手機網頁嵌入地圖標注位置 應電話機器人打電話違法嗎

Stochastic Depth

論文:Deep Networks with Stochastic Depth

本文的正則化針對于ResNet中的殘差結構,類似于dropout的原理,訓練時對模塊進行隨機的刪除,從而提升模型的泛化能力。

對于上述的ResNet網絡,模塊越在后面被drop掉的概率越大。

作者直覺上認為前期提取的低階特征會被用于后面的層。

第一個模塊保留的概率為1,之后保留概率隨著深度線性遞減。

對一個模塊的drop函數可以采用如下的方式實現:

def drop_connect(inputs, p, training):
    """ Drop connect. """
    if not training: return inputs # 測試階段
    batch_size = inputs.shape[0]
    keep_prob = 1 - p
    random_tensor = keep_prob
    random_tensor += torch.rand([batch_size, 1, 1, 1], dtype=inputs.dtype, device=inputs.device)
    # 以樣本為單位生成模塊是否被drop的01向量
    binary_tensor = torch.floor(random_tensor) 
    # 因為越往后越容易被drop,所以沒有被drop的值就要通過除keep_prob來放大
    output = inputs / keep_prob * binary_tensor
    return output

在Pytorch建立的Module類中,具有forward函數

可以在forward函數中進行drop:

def forward(self, x):
 x=...
 if stride == 1 and in_planes == out_planes:
        if drop_connect_rate:
            x = drop_connect(x, p=drop_connect_rate, training=self.training)
        x = x + inputs  # skip connection
    return x

主函數:

for idx, block in enumerate(self._blocks):
    drop_connect_rate = self._global_params.drop_connect_rate
    if drop_connect_rate:
        drop_connect_rate *= float(idx) / len(self._blocks)
    x = block(x, drop_connect_rate=drop_connect_rate)

補充:pytorch中的L2正則化實現方法

搭建神經網絡時需要使用L2正則化等操作來防止過擬合,而pytorch不像TensorFlow能在任意卷積函數中添加L2正則化的超參,那怎么在pytorch中實現L2正則化呢?

方法如下:超級簡單!

optimizer = torch.optim.Adam(net.parameters(), lr=0.001, weight_decay=5.0)

torch.optim.Adam()參數中的 weight_decay=5.0 即為L2正則化(只是pytorch換了名字),其數值即為L2正則化的懲罰系數,一般設置為1、5、10(根據需要設置,默認為0,不使用L2正則化)。

注:

pytorch中的優(yōu)化函數L2正則化默認對所有網絡參數進行懲罰,且只能實現L2正則化,如需只懲罰指定網絡層參數或采用L1正則化,只能自己定義。。。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 在Pytorch中使用樣本權重(sample_weight)的正確方法
  • Pytorch中的數據集劃分&正則化方法
  • PyTorch 實現L2正則化以及Dropout的操作
  • Python深度學習pyTorch權重衰減與L2范數正則化解析

標簽:山東 六盤水 江蘇 宿遷 蘭州 常州 成都 駐馬店

巨人網絡通訊聲明:本文標題《Pytorch 如何實現常用正則化》,本文關鍵詞  Pytorch,如何,實現,常用,正則,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Pytorch 如何實現常用正則化》相關的同類信息!
  • 本頁收集關于Pytorch 如何實現常用正則化的相關信息資訊供網民參考!
  • 推薦文章