seq2seq Pytorch - Ошибка при вычислении показателей (точность, отзыв, оценка F1) - PullRequest
0 голосов
/ 14 июля 2020

Я просматривал этот учебник по seq2seq и сохранял модели каждые 1000 итераций.

https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/seq2seq-translation.ipynb

Я пытаюсь вычислять метрики и анализировать результаты, поэтому Я хочу рассчитать оценку точности, отзыва и F1 для нового набора тестов. Я создаю этот сценарий:

import torch
import pandas as pd
from sklearn.metrics import precision_recall_fscore_support
import seq2seq_tutorial
max_length=50

test_vectors = pd.read_pickle("Pickels/first-second.pkl")
y_true = list(test_vectors[1])

test_vectors = [list(map(str, list(test_vectors.iloc[i])[0])) for i in range(len(test_vectors))]
test_vectors = [("".join(sent)).strip() for sent in test_vectors]

results = []
for k in range(1000, 75001, 1000):
    print("K: " + str(k))
    encoder = torch.load("Models/seq2seq/encoder_" + str(k) + "_steps.pth")
    decoder = torch.load("Models/seq2seq/decoder_" + str(k) + "_steps.pth")

    predictions_for_model_k = []
    for i in range(len(test_vectors)):
        try:
            prediction = explained_code.evaluate(encoder, decoder, test_vectors[i],max_length)
            prediction = prediction[0][0]
            predictions_for_model_k.append(prediction)
        except:
            print("Exception at %s" % i)

    accuracy = precision_recall_fscore_support(y_true, predictions_for_model_k, average='weighted')
    precision = accuracy[0]
    recall = accuracy[1]
    f_score = accuracy[2]

    print("Precision: " + str(round(precision * 100, 3)))
    print("Recall: " + str(round(recall * 100, 3)))
    print("F_score: " + str(round(f_score * 100, 3)))

    results.append([str(k) + "steps", predictions_for_model_k, y_true, precision, recall, f_score])

pd.to_pickle(results, "Pickles/Results/results.pkl")

Но я получил эту ошибку:

AttributeError: Can't get attribute 'EncoderRNN' on <module '__main__'

Вы можете помочь с этой проблемой? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...