浅析PyTorch中nn.Linear的使用
查看源码
Linear 的初始化部分:
class Linear(Module):
...
__constants__ = ['bias']
def __init__(self, in_features, out_features, bias=True):
super(Linear, self).__init__()
self.in_features = in_features
self.out_features = out_features
self.weight = Parameter(torch.Tensor(out_features, in_features))
if bias:
self.bias = Parameter(torch.Tensor(out_features))
else:
self.register_parameter('bias', None)
self.reset_parameters()
...
需要实现的内容:
计算步骤:
@weak_script_method
def forward(self, input):
return F.linear(input, self.weight, self.bias)
返回的是:input * weight + bias
对于 weight
weight: the learnable weights of the module of shape
:math:`(\text{out\_features}, \text{in\_features})`. The values are
initialized from :math:`\mathcal{U}(-\sqrt{k}, \sqrt{k})`, where
:math:`k = \frac{1}{\text{in\_features}}`
对于 bias
bias: the learnable bias of the module of shape :math:`(\text{out\_features})`.
If :attr:`bias` is ``True``, the values are initialized from
:math:`\mathcal{U}(-\sqrt{k}, \sqrt{k})` where
:math:`k = \frac{1}{\text{in\_features}}`
实例展示
举个例子:
>>> import torch
>>> nn1 = torch.nn.Linear(100, 50)
>>> input1 = torch.randn(140, 100)
>>> output1 = nn1(input1)
>>> output1.size()
torch.Size([140, 50])
张量的大小由 140 x 100 变成了 140 x 50
执行的操作是:
[140,100]×[100,50]=[140,50]
以上是 浅析PyTorch中nn.Linear的使用 的全部内容, 来源链接: utcz.com/z/344283.html