Я новичок в анализе текста и в настоящее время изучаю методы динамического встраивания слов (DWB). При запуске кодов репликации из этого блокнота Kaggle во время обучения я столкнулся со следующей ошибкой:
import pickle
import re
import numpy as np
import pandas as pd
from dynamic_bernoulli_embeddings.analysis import DynamicEmbeddingAnalysis
from dynamic_bernoulli_embeddings.training import train_model
from nltk import word_tokenize as nltk_word_tokenize
from gensim.corpora import Dictionary
from tqdm.notebook import tqdm
tqdm.pandas()
def _bad_word(word):
if len(word) < 2:
return True
if any(c.isdigit() for c in word):
return True
if "/" in word:
return True
return False
def word_tokenize(text):
text = re.sub(r"co-operation", "cooperation", text)
text = re.sub(r"-", " ", text)
words = [w.lower().strip("'.") for w in nltk_word_tokenize(text)]
words = [w for w in words if not _bad_word(w)]
return words
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Cell In[93], line 1
----> 1 model, loss_history = train_model(
2 dataset2, dictionary.token2id, validation=.1, num_epochs=3, k=25, notebook=True)
File ~/anaconda3/lib/python3.11/site-packages/dynamic_bernoulli_embeddings/training.py:96, in train_model(dataset, dictionary, validation, notebook, m, num_epochs, lr, validate_after, **kwargs)
94 if i == 0:
95 times = torch.zeros_like(times)
---> 96 loss, L_pos, L_neg, L_prior = model(targets, times, contexts, dynamic=i > 0)
97 loss.backward()
98 optimizer.step()
File ~/anaconda3/lib/python3.11/site-packages/torch/nn/modules/module.py:1501, in Module._call_impl(self, *args, **kwargs)
1496 # If we don't have any hooks, we want to skip the rest of the logic in
1497 # this function, and just call forward.
1498 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
1499 or _global_backward_pre_hooks or _global_backward_hooks
1500 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1501 return forward_call(*args, **kwargs)
1502 # Do not call functions when jit is used
1503 full_backward_hooks, non_full_backward_hooks = [], []
File ~/anaconda3/lib/python3.11/site-packages/dynamic_bernoulli_embeddings/embeddings.py:112, in DynamicBernoulliEmbeddingModel.forward(self, targets, times, contexts, validate, dynamic)
110 contexts[context_mask] = 0
111 contexts_summed = contexts.sum(axis=1)
--> 112 eta = (self.rho(targets_adjusted) * contexts_summed).sum(axis=1)
114 # Loss
115 loss, L_pos, L_neg, L_prior = None, None, None, None
File ~/anaconda3/lib/python3.11/site-packages/torch/nn/modules/module.py:1501, in Module._call_impl(self, *args, **kwargs)
1496 # If we don't have any hooks, we want to skip the rest of the logic in
1497 # this function, and just call forward.
1498 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks
1499 or _global_backward_pre_hooks or _global_backward_hooks
1500 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1501 return forward_call(*args, **kwargs)
1502 # Do not call functions when jit is used
1503 full_backward_hooks, non_full_backward_hooks = [], []
File ~/anaconda3/lib/python3.11/site-packages/torch/nn/modules/sparse.py:162, in Embedding.forward(self, input)
161 def forward(self, input: Tensor) -> Tensor:
--> 162 return F.embedding(
163 input, self.weight, self.padding_idx, self.max_norm,
164 self.norm_type, self.scale_grad_by_freq, self.sparse)
File ~/anaconda3/lib/python3.11/site-packages/torch/nn/functional.py:2210, in embedding(input, weight, padding_idx, max_norm, norm_type, scale_grad_by_freq, sparse)
2204 # Note [embedding_renorm set_grad_enabled]
2205 # XXX: equivalent to
2206 # with torch.no_grad():
2207 # torch.embedding_renorm_
2208 # remove once script supports set_grad_enabled
2209 _no_grad_embedding_renorm_(weight, input, max_norm, norm_type)
-> 2210 return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
IndexError: index out of range in self
Что я пробовал:
Проверил, что набор данных загружен правильно и токенизирован, как предполагалось.
Проверил, что объект Dictionary создан правильно.
Искал похожие проблемы, связанные с «индексом вне диапазона», но не смог найти конкретного решения к динамическому внедрению слов (DWB).
Вопросы:
Что вызывает ошибку IndexError: индекс выходит за пределы диапазона самостоятельно во время обучения?
Как устранить эту проблему ?
Будем очень признательны за любую помощь или предложения. Спасибо!
Я новичок в анализе текста и в настоящее время изучаю методы динамического встраивания слов (DWB). При запуске кодов репликации из этого блокнота Kaggle во время обучения я столкнулся со следующей ошибкой: [code]IndexError: index out of range in self [/code] Я использую набор данных общих дебатов Организации Объединенных Наций, доступный здесь. Ниже приведен код, который я запустил: [code]pip install git+https://github.com/llefebure/dynamic_bernoulli_embeddings.git [/code] [code]import pickle
import re
import numpy as np import pandas as pd from dynamic_bernoulli_embeddings.analysis import DynamicEmbeddingAnalysis from dynamic_bernoulli_embeddings.training import train_model from nltk import word_tokenize as nltk_word_tokenize from gensim.corpora import Dictionary from tqdm.notebook import tqdm tqdm.pandas() [/code] [code]def _bad_word(word): if len(word) < 2: return True if any(c.isdigit() for c in word): return True if "/" in word: return True return False
def word_tokenize(text): text = re.sub(r"co-operation", "cooperation", text) text = re.sub(r"-", " ", text) words = [w.lower().strip("'.") for w in nltk_word_tokenize(text)] words = [w for w in words if not _bad_word(w)] return words [/code] [code]dataset = pd.read_csv(".../un-general-debates.csv") dataset["bow"] = dataset.text.progress_apply(word_tokenize) dataset["time"] = dataset.year - dataset.year.min() [/code] [code]dictionary = Dictionary(dataset.bow) dictionary.filter_extremes(no_below=10, no_above=1.) dictionary.compactify() print(len(dictionary)) [/code] [code]model, loss_history = train_model( dataset, dictionary.token2id, validation=0.1, num_epochs=6, k=100, notebook=True) [/code] полная ошибка выглядела следующим образом!: [code]--------------------------------------------------------------------------- IndexError Traceback (most recent call last) Cell In[93], line 1 ----> 1 model, loss_history = train_model( 2 dataset2, dictionary.token2id, validation=.1, num_epochs=3, k=25, notebook=True)
File ~/anaconda3/lib/python3.11/site-packages/dynamic_bernoulli_embeddings/training.py:96, in train_model(dataset, dictionary, validation, notebook, m, num_epochs, lr, validate_after, **kwargs) 94 if i == 0: 95 times = torch.zeros_like(times) ---> 96 loss, L_pos, L_neg, L_prior = model(targets, times, contexts, dynamic=i > 0) 97 loss.backward() 98 optimizer.step()
File ~/anaconda3/lib/python3.11/site-packages/torch/nn/modules/module.py:1501, in Module._call_impl(self, *args, **kwargs) 1496 # If we don't have any hooks, we want to skip the rest of the logic in 1497 # this function, and just call forward. 1498 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks 1499 or _global_backward_pre_hooks or _global_backward_hooks 1500 or _global_forward_hooks or _global_forward_pre_hooks): -> 1501 return forward_call(*args, **kwargs) 1502 # Do not call functions when jit is used 1503 full_backward_hooks, non_full_backward_hooks = [], []
File ~/anaconda3/lib/python3.11/site-packages/torch/nn/modules/module.py:1501, in Module._call_impl(self, *args, **kwargs) 1496 # If we don't have any hooks, we want to skip the rest of the logic in 1497 # this function, and just call forward. 1498 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks 1499 or _global_backward_pre_hooks or _global_backward_hooks 1500 or _global_forward_hooks or _global_forward_pre_hooks): -> 1501 return forward_call(*args, **kwargs) 1502 # Do not call functions when jit is used 1503 full_backward_hooks, non_full_backward_hooks = [], []
IndexError: index out of range in self [/code] Что я пробовал: [list] [*]Проверил, что набор данных загружен правильно и токенизирован, как предполагалось. Проверил, что объект Dictionary создан правильно. [*]Искал похожие проблемы, связанные с «индексом вне диапазона», но не смог найти конкретного решения к динамическому внедрению слов (DWB). [/list] Вопросы: Что вызывает ошибку IndexError: индекс выходит за пределы диапазона самостоятельно во время обучения? Как устранить эту проблему ? Будем очень признательны за любую помощь или предложения. Спасибо!
Я новичок в анализе текста и в настоящее время изучаю методы динамического встраивания слов (DWB). При запуске кодов репликации из этого блокнота Kaggle во время обучения я столкнулся со следующей ошибкой:
IndexError: index out of range in self
Доброе утро, разработчики. Я знаю, что этот вопрос задавался раньше, но я не нашел решения своей проблемы в этих ответах. Сначала я хотел бы сказать вам, что я всего лишь новичок в Unity :p, ну, вот моя проблема: я создаю игру с разбиванием...
Здравствуйте!
У меня есть ошибка в коде Python, который выполняет доступ по SSH на одном из моих устройств и возвращает целое значение с количеством людей, подключенных к виртуальной локальной сети. Однако, если к этой виртуальной локальной сети...
Я работаю над реализацией задачи маршрутизации транспортных средств и сталкиваюсь с ошибкой IndexError при выполнении функции _get_start_solution. Ошибка возникает во время окончательного оператора печати решения.
Подробности:
У меня в экземпляре 30...
Я работаю над реализацией задачи маршрутизации транспортных средств и сталкиваюсь с ошибкой IndexError при выполнении функции _get_start_solution. Ошибка возникает во время окончательного оператора печати решения.
Подробности:
У меня в экземпляре 30...