es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de atributo: El objeto ‘Vocab’ no tiene el atributo ‘stoi’.

Intentando ejecutar un script de entrenamiento, después de resolver algunos mensajes de error, me he encontrado con este error: ¿Alguien sabe qué está sucediendo aquí?

¡Tamaño del lote > 1 no implementado! Regresando a batch_size = 1 …
Construyendo modelo multimodal…
Cargando parámetros del modelo.
Rastreo de pila (última llamada más reciente):
Archivo “translate_mm.py”, línea 166, en
principal()
Archivo “translate_mm.py”, línea 98, en principal
use_filter_pred=False)
Archivo “/content/drive/My Drive/Thesis/thesis_code/onmt/io/IO.py”, línea 198, en build_dataset
use_filter_pred=use_filter_pred)
Archivo “/content/drive/My Drive/Thesis/thesis_code/onmt/io/TextDataset.py”, línea 75, en init
out_examples = list(out_examples)
Archivo “/content/drive/My Drive/Thesis/thesis_code/onmt/io/TextDataset.py”, línea 69, en
out_examples = (self._construct_example_fromlist(
Archivo “/content/drive/My Drive/Thesis/thesis_code/onmt/io/TextDataset.py”, línea 68, en
example_values = ([ex[k] for k in keys] for ex in examples_iter)
Archivo “/content/drive/My Drive/Thesis/thesis_code/onmt/io/TextDataset.py”, línea 265, en _dynamic_dict
src_map = torch.LongTensor([src_vocab.stoi[w] for w in src])
Archivo “/content/drive/My Drive/Thesis/thesis_code/onmt/io/TextDataset.py”, línea 265, en src_map = torch.LongTensor([src_vocab.stoi[w] for w in src])
Archivo “/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py”, línea 1178, en getattr
type(self).name, name))
AttributeError: el objeto ‘Vocab’ no tiene ningún atributo ‘stoi’

lo cual se refiere a

    def dynamicdict(self, examplesiter):
        for example in examplesiter:
            src = example["src"]
            srcvocab = torchtext.vocab.Vocab(Counter(src))
            self.srcvocabs.append(srcvocab)
            # Mapping source tokens to indices in the dynamic dict.
            srcmap = torch.LongTensor([srcvocab.stoi[w] for w in src])
            example["srcmap"] = src_map

        if "tgt" in example:
            tgt = example["tgt"]
            mask = torch.LongTensor(
                    [0] + [src_vocab.stoi[w] for w in tgt] + [0])
            example["alignment"] = mask
        yield example


Nota: el modelo original se hizo con una versión mucho más antigua de torchtext, estoy suponiendo que el error está relacionado con eso, pero simplemente soy demasiado inexperto para saberlo con certeza.

¿Alguien tiene una idea? La búsqueda en Google no proporcionó resultados significativos.

Atentamente,
U.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error está relacionado con la versión de torchtext que se está utilizando. Parece que el modelo original se creó con una versión anterior de torchtext y la versión actual no tiene el atributo stoi. Puede ser necesario actualizar la versión de torchtext que se está utilizando o encontrar una forma de usar la versión anterior.

Comments are closed.