m = MultiLabelBinarizer()
X = pd.read_csv('data/data.csv', sep=None, engine='python')
X = X.dropna()
Y_train = m.fit_transform(X['labels'])
Y_train2 = [list(i) for i in Y_train]
data = pd.DataFrame({'text': pd.Series(X[text_col]), 'labels': Y_train2})
data = data.dropna()
train_df, eval_df = train_test_split(data, test_size=0.2)
numLabels = len(pd.unique(X['labels])) # count of the labels
model = MultiLabelClassificationModel('roberta', 'roberta-base', num_labels=numLabels, use_cuda=False)
model.train_model(pd.DataFrame(train_df))
Моя структура данных для столбца метки: [[0,1,0,0,0,1,0,0], [0,1,1,0,0,1,0, 0], [0,0,0,0,0,0,0,1] ....] для каждой строки существует один список меток, например [0,1,0,0,0,1,0, 0] в столбце метки
А для текстов в строке есть один текст (газетная статья).
(получено из этого источника: https://github.com/ThilinaRajapakse/simpletransformers#minimal -start- for-multilabel-классификация )
модель можно обучить, если я обучу ее только с 4 записями. Но когда я хочу обучить его всему набору данных, это дает мне следующее: RuntimeError: shape '[-1, 9]' недопустимо для ввода размера 8:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/simpletransformers/classification/multi_label_classification_model.py", line 121, in train_model
return super().train_model(train_df, multi_label=multi_label, eval_df=eval_df, output_dir=output_dir, show_running_loss=show_running_loss, args=args)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/simpletransformers/classification/classification_model.py", line 208, in train_model
global_step, tr_loss = self.train(train_dataset, output_dir, multi_label=multi_label, show_running_loss=show_running_loss, eval_df=eval_df, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/simpletransformers/classification/classification_model.py", line 306, in train
outputs = model(**inputs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 541, in __call__
result = self.forward(*input, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/simpletransformers/custom_models/models.py", line 117, in forward
loss = loss_fct(logits.view(-1, self.num_labels), labels.view(-1, self.num_labels))
RuntimeError: shape '[-1, 9]' is invalid for input of size 8
Я понятия не имею, где это Размер 8 и что делать сейчас, так как он работает с очень небольшим количеством записей. Кто-нибудь может помочь?