Linear Layer implementation
Implementazione di una layer lineare, es. un input layer. Abbiamo la possibilità di escludere il bias
- fan_in: numero di input del layer (size of each input sample)
- fan_out: numero di output del layer (size of each output sample)
class Linear:
def __init__(self, fan_in, fan_out, bias=True):
self.weight = torch.randn((fan_in, fan_out), generator=g) / fan_in**0.5
self.bias = torch.zeros(fan_out) if bias else None
def __call__(self, x):
self.out = x @ self.weight
if self.bias is not None:
self.out += self.bias
return self.out
def parameters(self):
return [self.weight] + ([] if self.bias is None else [self.bias])
è simile all'implementazione in pytorch:
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)