Pytorch学习09——Down/up sample、batch norm

1、Pooling

  • 取窗口中的值
  • max pooling:取窗口最大值
  • avg pooling:取窗口平均值

subsampling

  • 隔行采样

2、upsample(上采样)

(1)F.interpolate(x, scale_factor=2, mode='nearest')
x为输入
scale_factor为放大倍数
mode为插值方法

插值法

3、ReLU

4、Batch Norm

4.1 出现原因

  • 对于sigmoid函数来说,其在小于某个值和大于某个值后,梯度接近于0,不利于优化
  • 通过batch norm将输入变换到某个0附近的空间,同时方差要小,利于梯度优化

4.2 Feature scaling

  • image normalization
    以RGB图像为例,总结R、G、B三通道的平均值M和标准差σ
    new = (old - M)/ σ
    可以得到一个N(0, 1)的正态分布
  • batch normalization
    假设图片为(b,c,h,w)
    (1)batch norm
    c不动,取b个hw的均值。最后会生成一个大小为c的一维张量
    (2)layer norm
    b不动,取c的hw的均值。最后会生成一个大小为b的一维张量
    (3)Instance norm
    只取hw均值。最后生成(b,c)的二维张量
    在这里插入图片描述

Pipeline

(1)nn.BatchNorm1d(num_features, eps=1e-05, momentum=0.1, affine=True)
目的:对于二维或三维数据进行操作
参数:num_features为channel的大小,两者必须匹配
	affine代表参数γ和β是否要自动学习,true就代表要学习

(2)nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True)
目的:对于四维数据进行操作
参数:num_features为channel的大小,两者必须匹配

(3)layer=nn.BatchNorm1d(x)
通过layer.running_mean和layer.running_var可以得到均值和方差
  • 训练过程
    均值和标准差会进行统计,并对全局的running值进行更新
    后向传播时更新参数 β 和 γ
  • 测试过程
    不会统计测试集的均值和方差,而是直接将训练时的running值赋给测试集
    不会更新 β 和 γ

4.3 batch norm的优点

  • 收敛更快
  • 表现更好
  • 健壮性更强,可以使用更大一点的lr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值