Ожидаемый входной размер batch_size (32) соответствует целевому batch_size (19840) Классификатор BERT - PullRequest
0 голосов
/ 10 июля 2020

Я столкнулся с этой ошибкой с кодом:

model = BertForSequenceClassification.from_pretrained("pretrained/", num_labels=ohe_count)
model.to(device)

from IPython.display import clear_output

train_loss_set = []
train_loss = 0

model.train()


for step, batch in enumerate(train_dataloader):
    # добавляем батч для вычисления на GPU
    batch = tuple(t.to(device) for t in batch)
    # Распаковываем данные из dataloader
    b_input_ids, b_input_mask, b_labels = batch

    b_input_ids = b_input_ids.type(torch.LongTensor)
    b_input_mask = b_input_mask.type(torch.LongTensor)
    b_labels = b_labels.type(torch.LongTensor)

    b_input_ids = b_input_ids.to(device)
    b_input_mask = b_input_mask.to(device)
    b_labels = b_labels.to(device)
    
    optimizer.zero_grad()
    
    # Forward pass
    loss = model(b_input_ids, token_type_ids=None, attention_mask=b_input_mask, labels=b_labels)

    train_loss_set.append(loss[0].item())  
    
    # Backward pass
    loss[0].backward()
    
    optimizer.step()

    train_loss += loss[0].item()
    
    clear_output(True)
    plt.plot(train_loss_set)
    plt.title("Training loss")
    plt.xlabel("Batch")
    plt.ylabel("Loss")
    plt.show()

b_input_ids.shape = torch.Size([32, 100])

b_labels.shape = torch.Size([32, 620])

Формы кажутся нормальными, но я получаю сообщение об ошибке Expected input batch_size (32) to match target batch_size (19840)

1 Ответ

0 голосов
/ 10 июля 2020

Неважно, я пытался провести классификацию по нескольким меткам, но BertForSequenceClassification не может этого сделать.

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