Я начал работать над этим около двух месяцев go в Google Colab для среднесрочного проекта, и все работало отлично. Теперь я модифицирую его для окончательного проекта и продолжаю получать сообщение об ошибке «RuntimeError: Попытка создать тензор с отрицательным измерением -1: [-1, 768]». Похоже, что pytorch недавно выпустил новую версию 1.5, поэтому я опустился до версии 1.4 и все еще получил ту же ошибку. То же самое с 1,3, и я знаю, что я не использовал ничего ниже, так как это вышло в прошлом году. Я проверил это с помощью своего промежуточного кода и все еще получил ту же ошибку, поэтому я не знаю, что происходит. Вот фрагмент кода, связанный с загрузкой и использованием модели.
train_inputs, validation_inputs, train_labels, validation_labels = train_test_split(inputIds,
labels,
random_state=2020,
test_size=0.2)
train_masks, validation_masks, _, _ = train_test_split(attention_masks, inputIds, random_state=2020,
test_size=0.2)
# Turn data into torch tensors
train_inputs = torch.tensor(train_inputs)
validation_inputs = torch.tensor(validation_inputs)
train_labels = torch.tensor(train_labels)
validation_labels = torch.tensor(validation_labels)
train_masks = torch.tensor(train_masks)
validation_masks = torch.tensor(validation_masks)
# Create Iterators of the datasets
train_data = TensorDataset(train_inputs, train_masks, train_labels)
train_sampler = RandomSampler(train_data)
train_dataloader = DataLoader(train_data, sampler=train_sampler, batch_size=batch_size)
validation_data = TensorDataset(validation_inputs, validation_masks, validation_labels)
validation_sampler = SequentialSampler(validation_data)
validation_dataloader = DataLoader(validation_data, sampler=validation_sampler, batch_size=batch_size)
model = XLNetForSequenceClassification.from_pretrained('xlnet-base-cased', num_labels=2)
# Loads model into GPU memory
model.cuda()
param_optimizer = list(model.named_parameters())
no_decay = ['bias','gamma','beta']
optimizer_grouped_parameters = [
{'params':[p for n, p in param_optimizer if not any(nd in n for nd in no_decay)],
'weight_decay_rate':0.01},
{'params':[p for n, p in param_optimizer if any(nd in n for nd in no_decay)],
'weight_decay_rate':0.0}
]
optimizer = AdamW(optimizer_grouped_parameters, lr=2e-5)
Ошибка происходит в строке model = XLNetForSequenceClassification.from_pretrained('xlnet-base-cased', num_labels=2)
. Пакеты, которые я использую:
from pandas import to_datetime
import torch
from torch.utils.data import TensorDataset, DataLoader, RandomSampler, SequentialSampler
from keras.preprocessing.sequence import pad_sequences
from sklearn.model_selection import train_test_split
# MUST INSTALL PYTORCH-TRANSFORMERS
from pytorch_transformers import XLNetTokenizer, XLNetForSequenceClassification, AdamW
from tqdm import trange
from numpy import argmax, sum
import nltk
nltk.download('punkt')
Спасибо всем, кто пытается помочь.