日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Layer Norm

發(fā)布時(shí)間:2023/12/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Layer Norm 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考ConvNeXt中的Layer Normalization(LN) - 海斌的文章 - 知乎
https://zhuanlan.zhihu.com/p/481901798

Layer Norm本來(lái)是一個(gè)樣本norm自己,如圖所示:

也就是說(shuō),在[C,H,W]維進(jìn)行歸一化
而ConvNeXt中是這樣:

也就是在C的維度歸一化,即單一像素的所有channel做歸一化。

兩者實(shí)現(xiàn)方式上有所不同。
可以用F.layer_norm實(shí)現(xiàn),也可以用nn.layer_norm實(shí)現(xiàn),這里選用F.layer_norm

看ConvNeXt的實(shí)現(xiàn) class LayerNorm2d(nn.LayerNorm):"""LayerNorm on channels for 2d images.Args:num_channels (int): The number of channels of the input tensor.eps (float): a value added to the denominator for numerical stability.Defaults to 1e-5.elementwise_affine (bool): a boolean value that when set to ``True``,this module has learnable per-element affine parameters initializedto ones (for weights) and zeros (for biases). Defaults to True."""def __init__(self, num_channels: int, **kwargs) -> None:super().__init__(num_channels, **kwargs)self.num_channels = self.normalized_shape[0]def forward(self, x):assert x.dim() == 4, 'LayerNorm2d only supports inputs with shape ' \f'(N, C, H, W), but got tensor with shape {x.shape}'return F.layer_norm(x.permute(0, 2, 3, 1), self.normalized_shape, self.weight,self.bias, self.eps).permute(0, 3, 1, 2)

LayerNorm2d繼承的nn.LayerNorm,在初始化時(shí)調(diào)用了父類(lèi)的init函數(shù),我們來(lái)看看父類(lèi)是干了啥?

def __init__(self, normalized_shape: _shape_t, eps: float = 1e-5, elementwise_affine: bool = True,device=None, dtype=None) -> None:***self.normalized_shape = tuple(normalized_shape)

實(shí)際上這里僅僅是把num_channels,通道數(shù),存入了self.normalized_shape,并且用一個(gè)tuple保存。
所以說(shuō),關(guān)鍵是forward里面的F.layer_norm

我們看看傳入的參數(shù)
第一個(gè)參數(shù)是轉(zhuǎn)置后的x,也就是N,C,H,W轉(zhuǎn)置為N,H,W,C,把通道數(shù)放在最后一個(gè)維度,過(guò)F.layer_norm,normalized_shape實(shí)際上就是前面init函數(shù)里傳入的num_channels,就是一個(gè)數(shù)字。

接下來(lái)我們看看F.layer_norm的用法:
其實(shí)和nn.layernorm基本是一樣的,只是不用事先實(shí)例化,這樣的話(huà)參數(shù)要一起傳進(jìn)去。
對(duì)于nn.layernorm來(lái)說(shuō),

args: normalized_shape (int or list or torch.Size): input shape from an expected input of size If a single integer is used, it is treated as a singleton list, and this module willnormalize over the last dimension which is expected to be of that specific size.eps: a value added to the denominator for numerical stability. Default: 1e-5

上面這段話(huà)的意思就是說(shuō),這個(gè)normalized_shape可以是一個(gè)數(shù),也可以是一個(gè)list,如果是一個(gè)數(shù),則默認(rèn)在最后一維歸一化,且這個(gè)數(shù)需要等于最后一維的維度;如果是一個(gè)list,則這個(gè)list需要匹配從后往前的不同維度的維數(shù)
eg.

a.shape = (100. 96, 8, 8)#也就是100個(gè)96維的8x8的feature

如果是普通的layer norm,normalized_shape=[96, 8, 8]
如果這個(gè)參數(shù)是8,則在最后一維進(jìn)行歸一化
如果希望在所有point的channel歸一化,如ConvNeXt
則先轉(zhuǎn)置,把channel轉(zhuǎn)到最后一維,然后normalized_shape=num_channel即可

那么ConvNeXt的layer norm如何改成普通的layer norm呢?
如代碼所示:

class LayerNorm2d(nn.LayerNorm):def __init__(self, num_channels: int, **kwargs) -> None:super().__init__(num_channels, **kwargs)self.num_channels = self.normalized_shape[0]def forward(self, x):return F.layer_norm(x.permute(0, 2, 3, 1), self.normalized_shape, self.weight,self.bias, self.eps).permute(0, 3, 1, 2)

實(shí)際上只需要改forward里即可,即不轉(zhuǎn)置,且normalized_shape參數(shù)傳入x的最后三3維度

class LayerNorm2d(nn.LayerNorm):def __init__(self, num_channels: int, **kwargs) -> None:super().__init__(num_channels, **kwargs)self.num_channels = self.normalized_shape[0]def forward(self, x):return F.layer_norm(x, x.shape[1:], self.weight,self.bias, self.eps))

總結(jié)

以上是生活随笔為你收集整理的Layer Norm的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线免费你懂的 | 玉足女爽爽91 | 中文无码av一区二区三区 | 特级毛片a| 亚洲精品乱码久久久久久蜜桃不卡 | 免费看国产一级片 | 粉嫩av一区二区夜夜嗨 | 精品人妻无码在线 | 精品久久久噜噜噜久久久 | 天天色棕合合合合合合合 | 久久av免费看 | 欧美日韩国产大片 | 福利国产片 | 午夜老司机福利 | 在线免费观看福利 | 伊人久久网站 | 秋霞三区 | 这里只有精品视频在线观看 | 日韩欧美一区二区免费 | 日本一区二区不卡在线观看 | 国产999在线 | 国产欧美日韩久久 | 麻豆视屏| 成人免费观看av | 成人免费视频观看 | 日本体内she精高潮 男女视频在线免费观看 | 国产浪潮av | 91伊人久久| 天堂av亚洲av国产av电影 | 麻豆91av | 色网址在线 | 精品1区2区| 老熟女一区二区三区 | 在线免费激情视频 | 成人欧美精品 | 亚洲精品福利网站 | 丁香五香天堂网 | 精品不卡一区二区 | 香蕉伊思人视频 | 国产探花一区二区三区 | 纯爱无遮挡h肉动漫在线播放 | 久久靠逼视频 | 亚洲一区二区三区免费观看 | 不卡中文字幕在线 | 国产69精品久久久久久久久久 | 曰本丰满熟妇xxxx性 | 亚洲av无码精品色午夜果冻不卡 | 九九热视频在线观看 | 99九九热| 午夜精品福利影院 | 91在线看黄 | 麻豆一区二区三区四区 | 白嫩日本少妇做爰 | 中文精品在线观看 | 一级a性色生活片久久毛片 爱爱高潮视频 | 在线观看av一区 | 首尔之春在线观看 | 久久影院视频 | 99久久久国产精品无码免费 | 欧美日韩亚洲精品内裤 | 凹凸福利视频 | 日本一二三区视频 | 色一情一交一乱一区二区三区 | 丁香社区五月天 | 久久涩视频 | 日韩欧美国产视频 | 国产又大又黄的视频 | 久久国产精品偷 | 视色影视 | 一个色综合网 | 日韩特黄毛片 | 一卡二卡三卡四卡 | 日韩孕交| 亚洲精品一二区 | 国产三级自拍 | 久久久88| 婷婷激情久久 | 一级特黄色大片 | k8经典成人理伦片 | 日韩乱码人妻无码中文字幕久久 | 91久久精品一区 | 91成人免费在线观看视频 | 国内自拍偷拍 | 国产亚洲欧美精品久久久www | 中文字幕日产 | 国产福利第一页 | 免费毛片一区二区三区久久久 | 岛国精品在线播放 | 国产亚洲自拍一区 | 久久77 | 初尝黑人巨炮波多野结衣 | 久久精品国产精品亚洲色婷婷 | 91视频免费在观看 | 精品乱子一区二区三区 | 99黄色| 好男人天堂网 | 黄色精品视频在线观看 | 日本一本高清 | 夜夜操网站 |