Pytorch

pytorch 函数理解

tensor.normal_(mean=0, std=1, generator=None) → Tensor
这是tensor自带的函数,可以根据指定的均值和标准差初始化权重
tensor.fill_(value)
指定特定值填充

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=‘zeros’)

in_channels : 输入通道数
out_channels: 输出通道数
kernel_size : 卷积核的尺寸,可以是一个数(那么h和w一样),也可以是一个二元元组
stride:卷积的步长
padding :边界填充的宽度,h,w 同时填充
dilation: 卷积核放大系数,注意此处卷积核原始尺寸为k,那么 放大后变为s = d * (k-1) + 1
groups: 这个就是把输入通道分成多少组来独立卷积,然后再拼接
bias:如果为true,在输出会加一个可学习的偏置值
padding_mode: padding 填充的值

Pytorch
这个计算方式跟没有dilation一样,因为卷积核s = d x(k- 1)+ 1
卷积核的形式如下:
Pytorch
附属一些卷积的可视化:
Pytorch
Pytorch
Pytorch

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
Pytorch
简单来说,如果batch-size = n
那么一个batch 有 n 个feature map,batchnorm2d的意义就是对于一个batch,在feature map 的每个位置,都是有着n个值(分别表示不同的样本),相当于对这个n维向量做一个归范化。
不同的是,这里的规范化可以伴随这训练的变化而变化,同时有两个学习的参数

num_features : tensor 的通道数
eps : 用于防止分母为0,保证数据的稳定性
momentum: 用来计算移动平均值和方差的动量,e.g.计算公式: new_avg = (1-momentum)* last_avg + momentum * cur_avg
affine: 如果为true 那么γ 和β 就是可以训练的参数,否则分别为1 和 0
track_runnig_stats: 就是当前模块是否记录batch的均值和方差,换句话说,为true就采用滑动估计值,否则采用当前batch的值计算。