张量生成
torch.ones
torch.zeros
torch.tensor()
张量操作
torch.tensor.eq(x)
,生成一个与当前tensor等大小的张量,如果对应位置值等于参数x
,那么对应位置值为True
否则False
。
torch.gt(a, value)
torch.tensor.squeeze(dim)
torch.tensor.unsqueeze(dim)
torch.tensor.view(size)
根据传入的size
,调整当前tensor
的展示方式,但不修改底层数据
torch.tensor.reshape(size)
等价于torch.tensor.contiguous().view()
参见此文
torch.tensor.masked_fill_()
torch.tensor.logical_or()
torch.tensor.dim()
维度
torch.nn.ModuleList()
矩阵初始化方法
- 均匀分布:
torch.nn.init.uniform_(tensor, a=0, b=1)
服从~U(a,b) - 正态分布:
torch.nn.init.normal_(tensor, mean=0, std=1)
服从~N(mean,std) - 初始化为常数:
torch.nn.init.constant_(tensor, val)
初始化整个矩阵为常数val - Xavier初始化方式:正态分布的优化,使层数增加时方差快速趋于0或增加,从而一定程度避免梯度消息或爆炸,参考论文《Understanding the difficulty of training deep feedforward neural networks》,简化推导可参考博文
- kaiming (He initialization)初始化,针对Xavier在relu激活函数中效果一般的情况,进一步优化。
torch.nn.init.kaiming_uniform_(tensor, a=0, mode=‘fan_in’, nonlinearity=‘leaky_relu’)
, 均匀分布 ~ U(−bound,bound)torch.nn.init.kaiming_normal_(tensor, a=0, mode=‘fan_in’, nonlinearity=‘leaky_relu’)
, 正态分布~ N(0,std)