PyNorch/norch/nn/modules/linear.py

26 lines
766 B
Python
Raw Permalink Normal View History

2024-05-06 13:23:22 -03:00
from ..module import Module
from ..parameter import Parameter
2024-05-06 01:21:18 -03:00
class Linear(Module):
def __init__(self, input_dim, output_dim, bias=True):
2024-05-06 01:21:18 -03:00
super().__init__()
self.input_dim = input_dim
self.output_dim = output_dim
2024-05-06 13:23:22 -03:00
self.weight = Parameter(shape=[self.output_dim, self.input_dim])
if bias:
self.bias = Parameter(shape=[self.output_dim, 1])
else:
self.bias = None
2024-05-06 01:21:18 -03:00
def forward(self, x):
if self.bias:
z = self.weight @ x + self.bias
else:
z = self.weight @ x
2024-05-06 01:21:18 -03:00
return z
def inner_repr(self):
return f"input_dim={self.input_dim}, output_dim={self.output_dim}, " \
f"bias={True if self.bias is not None else False}"