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')