distillbert ktrain 'слишком много значений, чтобы распаковать'

Я пытаюсь запустить DistilBert с ktrain в Colab, но получаю «ошибку слишком много значений для распаковки». Я пытаюсь выполнить классификацию токсичных комментариев, я загрузил 'train.csv' из CivilComments, я могу запустить BERT, но не DistilBert

      #prerequisites:
!pip install ktrain
import ktrain
from ktrain import text as txt
DATA_PATH = '/content/train.csv'
NUM_WORDS = 50000 
MAXLEN = 150 
label_columns = ["toxic", "severe_toxic", "obscene", 
                 "threat", "insult", "identity_hate"]

он отлично работает, если я просто выполняю предварительную обработку с помощью 'bert', но тогда я не могу использовать модель distilbert. При предварительной обработке с помощью distilbert я получаю сообщение об ошибке:

       (x_test, y_test), preproc = txt.texts_from_csv(DATA_PATH, 'comment_text', label_columns=label_columns, val_filepath=None, max_features=NUM_WORDS, maxlen=MAXLEN,  preprocess_mode='distilbert')

'слишком много значений для распаковки, ожидается 2', если я заменяю distilbert на bert, он работает нормально (код ниже), но тогда я вынужден использовать bert в качестве модели, предварительная обработка с помощью bert работает нормально:

      (x_train, y_train), (x_test, y_test), preproc = txt.texts_from_csv(DATA_PATH, 'comment_text', label_columns=label_columns, val_filepath=None, max_features=NUM_WORDS, maxlen=MAXLEN,  preprocess_mode='bert')

на этом нет ошибки, но тогда я не могу использовать distilbert, см. ниже:

пример: model = txt.text_classifier('distilbert', train_data=(x_train, y_train), preproc=preproc) сообщение об ошибке: if 'bert' is selected model, then preprocess_mode='bert' should be used and vice versa

Я хочу использовать (x_test, y_test), preproc = txt.texts_from_csv(DATA_PATH, 'comment_text', label_columns=label_columns, val_filepath=None, max_features=NUM_WORDS, maxlen=MAXLEN, preprocess_mode='distilbert') с моделью дистиллберта, как избежать ошибки "слишком много значений для распаковки"

Ссылки, на которых основан код: Arun Maiya (2019). ktrain: легкая оболочка для Keras, помогающая обучать нейронные сети. https://towardsdatascience.com/ktrain-a-lightweight-wrapper-for-keras-to-help-train-neural-networks-82851ba889c.

1 ответ

Как показано в этом примере записной книжки , texts_from_* функции возвращаются TransformerDataset объекты (не NumpyArrays) при указании preprocess_mode='distilbert'как модель. Итак, вам нужно сделать что-то вроде этого:

      trn, val, preproc = txt.texts_from_csv(DATA_PATH, 'comment_text', label_columns=label_columns, val_filepath=None, max_features=NUM_WORDS, maxlen=MAXLEN,  preprocess_mode='distilbert')


Другие вопросы по тегам