Embedding class implementation
Implementazione di un layer embedding che esegue l'operazione di indicizzazione degli input durante il forward pass.
i parametri:
- num_embeddings indica la grandezza del dizionario degli embeddings (es. i 27 caratteri dell'alfabeto)
- embedding_dim indica la grandezza di ogni embedding vector di input (es. le 2 dimensioni che individuano un punto nello spazio, che rappresenta uno dei 27 caratteri dell'alfabeto)
class Embedding:
def __init__(self, num_embeddings, embedding_dim):
self.weight = torch.randn((num_embeddings, embedding_dim))
def __call__(self, IX):
self.out = self.weight[IX] # indicizzazione
return self.out
def parameters(self):
return [self.weight]
E' simile alla classe pytorch:
torch.nn.Embedding(num_embeddings, embedding_dim,
padding_idx=None, max_norm=None, norm_type=2.0,
scale_grad_by_freq=False, sparse=False, _weight=None, _freeze=False,
device=None, dtype=None
)