web-dev-qa-db-fra.com

Indice d'intégration de Pytorch hors de portée

Je suive ce tutoriel ici https://cs230-stanford.github.fr.pytorch-nlp.html . Là-bas, un modèle neural est créé, en utilisant nn.Module, Avec une couche d'incorporation, qui est initialisée ici

self.embedding = nn.Embedding(params['vocab_size'], params['embedding_dim'])

vocab_size Est le nombre total d'échantillons de formation, qui est 4000. embedding_dim Est 50. La pièce correspondante de la méthode forward est inférieure à

def forward(self, s):
        # apply the embedding layer that maps each token to its embedding
        s = self.embedding(s)   # dim: batch_size x batch_max_len x embedding_dim

Je reçois cette exception lorsque vous passez un lot sur le modèle comme SO model(train_batch)train_batch Est une matrice numpie de dimension batch_size X batch_max_len. Chaque échantillon est une phrase et chaque phrase est rembourrée de sorte qu'elle ait la longueur de la phrase la plus longue du lot.

Fichier "/USERSERS/LIAM_ADAMS/DOCUMITS/CS512/RESEARCH_PROJECT/CUSTOM/MODEL.PY", Ligne 34, en avant S = Self.Embedding (s) # Dim: Batch_Size x Batch_max_len x Embedding_DIM Fichier "/ Utilisateurs/Liam_Adams/Documents/CS512/VENV_RESEARCH/LIB/PYTHON3.7/Paquets de site/TORCH/NN/MODULES/MODULE.PY ", LIGNE 493, IN Call Résultat = Self.Forward (* INPUT, ** KWARGS) Fichier "/USERSERS/LIAM_ADAMS/DOCUMITS/CS512/VENV_RESEARCH/LIB/PYTHON3.7/SITE-PACKAGES/TORCH/NN/MODULES/SPARSE.PY", ligne 117, en avant Self.norm_type, Self.cale_grad_by_freq, Self.spa.e) Fichier "/USers/liam_adams/documents/cs512/venv_research/lib/python3.7/site-packages/torch/nn/functional.py", ligne 1506, dans le retour Torch.embedding (poids, entrée, padding_idx, échelle_grad_by_freq, Sparse) RuntimeError: Index hors de portée à ../aten/src/th/generic/thtensorevenMoremath.cpp:193

Le problème est-il ici que l'intégration est initialisée avec différentes dimensions que celles de mon tableau de lots? Mon batch_size Sera constant mais batch_max_len Changera avec chaque lot. C'est comme ça que c'est fait dans le tutoriel.

5
gary69

taille d'intégration dans nn.embedding devrait être max(input_data). Vérifiez vos types de données de l'INPUT_DATA, car cela doit être entier pour être déterministe.

0
shivanand naduvin