BatchNorm2d()函数

在卷积神经网络的卷积层之后总会添加BatchNorm2d进行数据的归一化处理,这使得数据在进行Relu之前不会因为数据过大而导致网络性能的不稳定,BatchNorm2d()函数数学原理如下:

 

BatchNorm2d()内部的参数如下:

1.num_features:一般输入参数为batch_size*num_features*height*width,即为其中特征的数量

2.eps:分母中添加的一个值,目的是为了计算的稳定性,默认为:1e-5

3.momentum:一个用于运行过程中均值和方差的一个估计参数(我的理解是一个稳定系数,类似于SGD中的momentum的系数)

4.affine:当设为true时,会给定可以学习的系数矩阵gamma和beta
    

class BasicConv2d(nn.Module): #nn.Module是nn中十分重要的类,包含网络各层的定义及forward方法
	
	def __init__(self, in_planes, out_planes, kernel_size, stride, padding = 0):
		 # nn.Module的子类函数必须在构造函数中执行父类的构造函数
		super(BasicConv2d, self).__init__()    # 等价与nn.Module.__init__()
		self.conv = nn.Conv2d(in_planes, out_planes,
								kernel_size = kernel_size, stride = stride,
								padding = padding, bias = False    #如果bias=True,添加偏置
							 ) # verify bias false
		self.bn = nn.BatchNorm2d(out_planes,
								eps=0.001, # value found in tensorflow
								momentum=0.1, # default pytorch value
								affine=True)
		self.relu = nn.ReLU(inplace = True)

	def forward(self, x):   #前向传播
		
		x = self.relu(self.bn(self.conv(x)))
		return x


 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值