欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch中LN(LayerNorm)及Relu和其變相的輸出操作

 更新時(shí)間:2021年05月27日 09:32:24   作者:永遠(yuǎn)的小白蝦  
這篇文章主要介紹了pytorch中LN(LayerNorm)及Relu和其變相的輸出操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

主要就是了解一下pytorch中的使用layernorm這種歸一化之后的數(shù)據(jù)變化,以及數(shù)據(jù)使用relu,prelu,leakyrelu之后的變化。

import torch
import torch.nn as nn
import torch.nn.functional as F
class model(nn.Module):
    def __init__(self):
        super(model, self).__init__()
        self.LN=nn.LayerNorm(10,eps=0,elementwise_affine=True)
        self.PRelu=nn.PReLU(init=0.25)
        self.Relu=nn.ReLU()
        self.LeakyReLU=nn.LeakyReLU(negative_slope=0.01,inplace=False)
    def forward(self,input ):
        out=self.LN(input)
        print("LN:",out)
        out1=self.PRelu(out)
        print("PRelu:",out1)
        out2=self.Relu(out)
        print("Relu:",out2)
        out3=self.LeakyReLU(out)
        print("LeakyRelu:",out3)
        return out
tensor=torch.tensor([-0.9,0.1,0,-0.1,0.9,-0.4,0.9,-0.5,0.8,0.1])
net=model()
print(tensor)
net(tensor)

輸出:

tensor([-0.9000,  0.1000,  0.0000, -0.1000,  0.9000, -0.4000,  0.9000, -0.5000,
         0.8000,  0.1000])
LN: tensor([-1.6906,  0.0171, -0.1537, -0.3245,  1.3833, -0.8368,  1.3833, -1.0076,
         1.2125,  0.0171], grad_fn=<NativeLayerNormBackward>)
Relu: tensor([0.0000, 0.0171, 0.0000, 0.0000, 1.3833, 0.0000, 1.3833, 0.0000, 1.2125,
        0.0171], grad_fn=<ReluBackward0>)
PRelu: tensor([-0.4227,  0.0171, -0.0384, -0.0811,  1.3833, -0.2092,  1.3833, -0.2519,
         1.2125,  0.0171], grad_fn=<PreluBackward>)
LeakyRelu: tensor([-0.0169,  0.0171, -0.0015, -0.0032,  1.3833, -0.0084,  1.3833, -0.0101,
         1.2125,  0.0171], grad_fn=<LeakyReluBackward0>)

從上面可以看出,這個(gè)LayerNorm的歸一化,并不是將數(shù)據(jù)限定在0-1之間,也沒有進(jìn)行一個(gè)類似于高斯分布一樣的分?jǐn)?shù),只是將其進(jìn)行了一個(gè)處理,對(duì)應(yīng)的數(shù)值得到了一些變化,相同數(shù)值的變化也是相同的。

Relu的則是單純將小于0的數(shù)變成了0,減少了梯度消失的可能性

PRelu是一定程度上的保留了負(fù)值,根據(jù)init給的值。

LeakyRelu也是一定程度上保留負(fù)值,不過(guò)比較小,應(yīng)該是根據(jù)negative_slope給的值。

補(bǔ)充:PyTorch學(xué)習(xí)之歸一化層(BatchNorm、LayerNorm、InstanceNorm、GroupNorm)

BN,LN,IN,GN從學(xué)術(shù)化上解釋差異:

BatchNorm:batch方向做歸一化,算NHW的均值,對(duì)小batchsize效果不好;BN主要缺點(diǎn)是對(duì)batchsize的大小比較敏感,由于每次計(jì)算均值和方差是在一個(gè)batch上,所以如果batchsize太小,則計(jì)算的均值、方差不足以代表整個(gè)數(shù)據(jù)分布

LayerNorm:channel方向做歸一化,算CHW的均值,主要對(duì)RNN作用明顯;

InstanceNorm:一個(gè)channel內(nèi)做歸一化,算H*W的均值,用在風(fēng)格化遷移;因?yàn)樵趫D像風(fēng)格化中,生成結(jié)果主要依賴于某個(gè)圖像實(shí)例,所以對(duì)整個(gè)batch歸一化不適合圖像風(fēng)格化中,因而對(duì)HW做歸一化??梢约铀倌P褪諗浚⑶冶3置總€(gè)圖像實(shí)例之間的獨(dú)立。

GroupNorm:將channel方向分group,然后每個(gè)group內(nèi)做歸一化,算(C//G)HW的均值;這樣與batchsize無(wú)關(guān),不受其約束。

SwitchableNorm是將BN、LN、IN結(jié)合,賦予權(quán)重,讓網(wǎng)絡(luò)自己去學(xué)習(xí)歸一化層應(yīng)該使用什么方法。

1 BatchNorm

torch.nn.BatchNorm1d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
torch.nn.BatchNorm3d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

參數(shù):

num_features: 來(lái)自期望輸入的特征數(shù),該期望輸入的大小為'batch_size x num_features [x width]'

eps: 為保證數(shù)值穩(wěn)定性(分母不能趨近或取0),給分母加上的值。默認(rèn)為1e-5。

momentum: 動(dòng)態(tài)均值和動(dòng)態(tài)方差所使用的動(dòng)量。默認(rèn)為0.1。

affine: 布爾值,當(dāng)設(shè)為true,給該層添加可學(xué)習(xí)的仿射變換參數(shù)。

track_running_stats:布爾值,當(dāng)設(shè)為true,記錄訓(xùn)練過(guò)程中的均值和方差;

實(shí)現(xiàn)公式:

track_running_stats:布爾值,當(dāng)設(shè)為true,記錄訓(xùn)練過(guò)程中的均值和方差;

實(shí)現(xiàn)公式:

在這里插入圖片描述

2 GroupNorm

torch.nn.GroupNorm(num_groups, num_channels, eps=1e-05, affine=True)

參數(shù):

num_groups:需要?jiǎng)澐譃榈膅roups

num_features:來(lái)自期望輸入的特征數(shù),該期望輸入的大小為'batch_size x num_features [x width]'

eps:為保證數(shù)值穩(wěn)定性(分母不能趨近或取0),給分母加上的值。默認(rèn)為1e-5。

momentum:動(dòng)態(tài)均值和動(dòng)態(tài)方差所使用的動(dòng)量。默認(rèn)為0.1。

affine:布爾值,當(dāng)設(shè)為true,給該層添加可學(xué)習(xí)的仿射變換參數(shù)。

實(shí)現(xiàn)公式:

在這里插入圖片描述

3 InstanceNorm

torch.nn.InstanceNorm1d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)
torch.nn.InstanceNorm2d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)
torch.nn.InstanceNorm3d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)

參數(shù):

num_features:來(lái)自期望輸入的特征數(shù),該期望輸入的大小為'batch_size x num_features [x width]'

eps:為保證數(shù)值穩(wěn)定性(分母不能趨近或取0),給分母加上的值。默認(rèn)為1e-5。

momentum:動(dòng)態(tài)均值和動(dòng)態(tài)方差所使用的動(dòng)量。默認(rèn)為0.1。

affine:布爾值,當(dāng)設(shè)為true,給該層添加可學(xué)習(xí)的仿射變換參數(shù)。

track_running_stats:布爾值,當(dāng)設(shè)為true,記錄訓(xùn)練過(guò)程中的均值和方差;

實(shí)現(xiàn)公式:

在這里插入圖片描述

4 LayerNorm

torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True)

參數(shù):

normalized_shape: 輸入尺寸

[∗×normalized_shape[0]×normalized_shape[1]×…×normalized_shape[−1]]

eps: 為保證數(shù)值穩(wěn)定性(分母不能趨近或取0),給分母加上的值。默認(rèn)為1e-5。

elementwise_affine: 布爾值,當(dāng)設(shè)為true,給該層添加可學(xué)習(xí)的仿射變換參數(shù)。

實(shí)現(xiàn)公式:

在這里插入圖片描述

5 LocalResponseNorm

torch.nn.LocalResponseNorm(size, alpha=0.0001, beta=0.75, k=1.0)

參數(shù):

size:用于歸一化的鄰居通道數(shù)

alpha:乘積因子,Default: 0.0001

beta :指數(shù),Default: 0.75

k:附加因子,Default: 1

實(shí)現(xiàn)公式:

在這里插入圖片描述

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python對(duì)字符串實(shí)現(xiàn)去重操作的方法示例

    Python對(duì)字符串實(shí)現(xiàn)去重操作的方法示例

    字符串去重是python中字符串操作常見的一個(gè)需求,最近在工作中就又遇到了,所以下面這篇文章主要給大家介紹了關(guān)于Python對(duì)字符串實(shí)現(xiàn)去重操作的相關(guān)資料,文中給出了詳細(xì)的介紹,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • python出現(xiàn)

    python出現(xiàn)"IndentationError: unexpected indent"錯(cuò)誤解決辦法

    這篇文章主要介紹了python出現(xiàn)"IndentationError: unexpected indent"錯(cuò)誤解決辦法的相關(guān)資料,希望通過(guò)本文能解決遇到這樣的問題,需要的朋友可以參考下
    2017-10-10
  • Python+Tkinter簡(jiǎn)單實(shí)現(xiàn)注冊(cè)登錄功能

    Python+Tkinter簡(jiǎn)單實(shí)現(xiàn)注冊(cè)登錄功能

    這篇文章主要為大家詳細(xì)介紹了Python+Tkinter簡(jiǎn)單實(shí)現(xiàn)注冊(cè)登錄功能,連接本地MySQL數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python Flask 搭建微信小程序后臺(tái)詳解

    Python Flask 搭建微信小程序后臺(tái)詳解

    這篇文章主要介紹了Python Flask 搭建微信小程序后臺(tái),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python 二進(jìn)制字節(jié)流數(shù)據(jù)的讀取操作(bytes與bitstring)

    Python 二進(jìn)制字節(jié)流數(shù)據(jù)的讀取操作(bytes與bitstring)

    本文主要介紹了Python 二進(jìn)制字節(jié)流數(shù)據(jù)的讀取操作(bytes與bitstring),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python3實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    python3實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 解決cupy-cuda安裝下載報(bào)錯(cuò)以及速度太慢的問題

    解決cupy-cuda安裝下載報(bào)錯(cuò)以及速度太慢的問題

    在嘗試下載Cupy-CUDA時(shí)可能會(huì)遇到報(bào)錯(cuò)"ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.",這通常是由于網(wǎng)絡(luò)問題導(dǎo)致的,出現(xiàn)這種情況時(shí),可以嘗試使用清華大學(xué)的鏡像源來(lái)加速下載,這樣不僅可以提高下載速度
    2024-09-09
  • Django中常遇到的錯(cuò)誤問題

    Django中常遇到的錯(cuò)誤問題

    在Django開發(fā)中,設(shè)置DEBUG=False時(shí)需要配置ALLOWED_HOSTS以防止報(bào)錯(cuò),此外,如果django-admin.py命令找不到,需添加Django的安裝路徑到系統(tǒng)環(huán)境變量,此文還提供了一些常見Django錯(cuò)誤的解決方法,如數(shù)據(jù)庫(kù)添加中文報(bào)錯(cuò)、信號(hào)無(wú)法觸發(fā)等問題
    2024-09-09
  • Django使用模板后無(wú)法找到靜態(tài)資源文件問題解決

    Django使用模板后無(wú)法找到靜態(tài)資源文件問題解決

    這篇文章主要介紹了Django使用模板后無(wú)法找到靜態(tài)資源文件問題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 如何用pandas處理hdf5文件

    如何用pandas處理hdf5文件

    這篇文章主要介紹了如何用pandas處理hdf5文件,幫助大家更好的理解和學(xué)習(xí)使用python進(jìn)行數(shù)據(jù)處理,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論