文章目录
线性模型
前置
目的
通过学习先进的内置模型,提高建模能力。大佬能把这个模型写出花来!我也要做一个能写出花来的男人!
线性模型要解决的问题
Y = A X + b Y=AX+b Y=AX+b
实现对A和b的逼近。(请记住这个公式,请相信自己能记住他,最起码五分钟!)
1 完整源码
class Linear(Module):
__constants__ = ['in_features', 'out_features']
in_features: int
out_features: int
weight: Tensor
def __init__(self, in_features: int, out_features: int, bias: bool = True) -> None:
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()
def reset_parameters(self) -> None:
init.kaiming_uniform_(self.weight, a=math.sqrt(5))
if self.bias is not None:
fan_in, _ = init._calculate_fan_in_and_fan_out(self.weight)
bound = 1 / math.sqrt(fan_in)
init.uniform_(self.bias, -bound, bound