zoukankan      html  css  js  c++  java
  • Pytorch-nn.BatchNorm2d()

    Pytorch官方文档:

    测试代码:

    转自:https://blog.csdn.net/tmk_01/article/details/80679549

    import torch
    import torch.nn as nn

    m = nn.BatchNorm2d(2,affine=True) #weight(gamma)和bias(beta)将被使用
    input = torch.randn(1,2,3,4)
    output = m(input)

    print("输入图片:")
    print(input)
    print("归一化权重(公式中的gamma):")
    print(m.weight)
    print("归一化偏置(公式中的beta):")
    print(m.bias)

    print("归一化的输出:")
    print(output)
    print("输出的尺度:")
    print(output.size())

    # i = torch.randn(1,1,2)
    print("输入的第一个维度:")
    print(input[0][0])
    firstDimenMean = torch.Tensor.mean(input[0][0])
    firstDimenVar= torch.Tensor.var(input[0][0],False) #Bessel's Correction贝塞尔校正不会被使用

    print(m.eps)
    print("输入的第一个维度平均值:")
    print(firstDimenMean)
    print("输入的第一个维度方差:")
    print(firstDimenVar)

    bacthnormone =
        ((input[0][0][0][0] - firstDimenMean)/(torch.pow(firstDimenVar+m.eps,0.5) ))
                   * m.weight[0] + m.bias[0]
    print(bacthnormone)

    代码运行结果:

    输入图片:
    tensor([[[[-1.1622, -0.9170, -0.6798, -0.0270],
              [ 0.2687, -1.6046, -0.2142, -0.3561],
              [ 0.2908, -0.1012,  1.3594,  1.1316]],
    
             [[ 0.4689,  1.4049,  1.2324, -1.3721],
              [-0.1498, -0.3207,  0.5072, -1.2563],
              [ 1.5934, -0.8010,  0.1270,  0.5993]]]])
    归一化权重(公式中的gamma):
    Parameter containing:
    tensor([0.8681, 0.7207], requires_grad=True)
    归一化偏置(公式中的beta):
    Parameter containing:
    tensor([0., 0.], requires_grad=True)
    归一化的输出:
    tensor([[[[-1.0344, -0.7794, -0.5326,  0.1463],
              [ 0.4538, -1.4945, -0.0484, -0.1960],
              [ 0.4767,  0.0691,  1.5881,  1.3512]],
    
             [[ 0.2279,  0.9400,  0.8088, -1.1729],
              [-0.2429, -0.3729,  0.2570, -1.0848],
              [ 1.0834, -0.7384, -0.0323,  0.3271]]]],
           grad_fn=<ThnnBatchNormBackward>)
    输出的尺度:
    torch.Size([1, 2, 3, 4])
    输入的第一个维度:
    tensor([[-1.1622, -0.9170, -0.6798, -0.0270],
            [ 0.2687, -1.6046, -0.2142, -0.3561],
            [ 0.2908, -0.1012,  1.3594,  1.1316]])
    1e-05
    输入的第一个维度平均值:
    tensor(-0.1676)
    输入的第一个维度方差:
    tensor(0.6967)
    tensor(-1.0344, grad_fn=<ThAddBackward>)

    BatchNorm深度理解可参考:

      https://zhuanlan.zhihu.com/p/30922689

      4.Normalizing activations in a network

      5.Fitting Batch Norm into a neural network

      6.Why does Batch Norm work?

      7. Batch Norm at test time

      

  • 相关阅读:
    数组名作为左值和右值的区别
    指针与数组区别
    linux服务器开启免密登录
    mssql清空数据和添加主键约束语法
    链接服务器方式查视图导致索引失效的解决方法
    sqlserver2008r2 版本数据库迁移到2019版本导致查询效率慢的解决方法
    lnmp一键安装访问default目录可行,访问其它站点报404错误
    lPeer reports incompatible or unsupported protocol version.
    yum安装时出现:Cannot retrieve metalink for repository: epel. Please verify its path and try again
    Linux Centos7.4 下安装 LAMP环境及配置(php5.6,mysql5.7)
  • 原文地址:https://www.cnblogs.com/leebxo/p/10102689.html
Copyright © 2011-2022 走看看