我是靠谱客的博主 俏皮寒风,最近开发中收集的这篇文章主要介绍pytorch的BatchNorm1d到底是如何计算的?手绘可视化解释,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

【原创文章,转载请注明出处,栓Q】
众所周知,Batchnorm1d是用来归一化2D和3D数据的,即input的shape是<batch_size,channels>或者<batch_size,channels,sequence_length>,看了很多介绍,有还原计算的,但是没有清晰地说明到底在哪个维度上进行的归一化,所以根据咱这“凑数”的本事亲自试验了一下,终于搞懂了,看下面的例子,看代码头疼的可以直接看图:
首先看input的shape是<batch_size,channels>的例子:

import torch
bn=torch.nn.BatchNorm1d(num_features=2)
input = torch.tensor([[-1.,8.],[0.,0.],[1.,-8.]])
output=bn(input)
print(input)
print(output)
print(output.shape)

运行结果为:

tensor([[-1.,  8.],
        [ 0.,  0.],
        [ 1., -8.]])
tensor([[-1.2247,  1.2247],
        [ 0.0000,  0.0000],
        [ 1.2247, -1.2247]], grad_fn=<NativeBatchNormBackward0>)
torch.Size([3, 2])

看图:
在这里插入图片描述
2D数据的BN挺好理解的,就是在不同样本的同一个特征下做归一化。

----------------------------------------------------------------------------------------
然后看input的shape是<batch_size,channels,sequence_length>的例子:

import torch
bn=torch.nn.BatchNorm1d(num_features=4)
input = torch.tensor([[[1.,2.],[3.,-2.],[-1.,-2.],[-3.,2.]],[[-1.,-2.],[-3.,2.],[1.,2.],[3.,-2.]]])
output=bn(input)
print(input)
print(output)
print(output.shape)

运行结果为:

tensor([[[ 1.,  2.],
         [ 3., -2.],
         [-1., -2.],
         [-3.,  2.]],
        [[-1., -2.],
         [-3.,  2.],
         [ 1.,  2.],
         [ 3., -2.]]])
tensor([[[ 0.6325,  1.2649],
         [ 1.1767, -0.7845],
         [-0.6325, -1.2649],
         [-1.1767,  0.7845]],
        [[-0.6325, -1.2649],
         [-1.1767,  0.7845],
         [ 0.6325,  1.2649],
         [ 1.1767, -0.7845]]], grad_fn=<NativeBatchNormBackward0>)
torch.Size([2, 4, 2])

看图:
在这里插入图片描述
这里为了清晰地说明通道和序列,特意画成行是序列,列是通道的样子,但是不影响理解,就是说哈,BN1d在BN 3D数据时的原理是,以通道一,也就是图中的c1为例,将c1下的两个样本的s1归一化,将c1下的两个样本的s2归一化。c2,c3,c4以此类推。宏观的理解是,假设input是2个样本的含有2个字的向量(比如是*[你,好][宝,贝]*),其中,每个字的词嵌入维度是4(就是每个字用4个数表示),BN1d是将“你”和“宝”的字向量按照对应的词嵌入维度进行归一化,然后再将“好”和“贝”的字向量按照对应的词嵌入维度进行归一化。

洞妖洞妖,over over

最后

以上就是俏皮寒风为你收集整理的pytorch的BatchNorm1d到底是如何计算的?手绘可视化解释的全部内容,希望文章能够帮你解决pytorch的BatchNorm1d到底是如何计算的?手绘可视化解释所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部