Я тренируюсь обнимаю лиц трансформатор Albert-base-v2, чтобы предсказать токен в POS_TAGS, Chunk_tags и NER_TAGS, поэтому я положил 3-й слой FC на вершину стека Encoder. Я написал функцию сопоставления для накладки и оценки данных, прежде чем разместить данные для сопоставления функции, я преобразую ее в тензоры факела, но после составления списка input_ids, когда я ставлю его для накладки, это дает ошибку:- typeerr: только Целые тензоры одного элемента могут быть преобразованы в индекс, это код, < /p>
'chunk_tags', 'ner_tags', 'input_ids'])
def get_collate_fn(pad_index):
def collate_fn(batch):
batch_ids = [torch.tensor(i["input_ids"], dtype=torch.long) for i in batch]
batch_ids = nn.utils.rnn.pad_sequence(batch_ids, batch_first=True,
padding_value=pad_index)
batch_label_1 = [i["pos_tags"] for i in batch]
batch_label_1 = torch.stack(batch_label_1)
batch_label_2 = [i["chunk_tags"] for i in batch]
batch_label_2 = torch.stack(batch_label_2)
batch_label_3 = [i["ner_tags"] for i in batch]
batch_label_3 = torch.stack(batch_label_3)
# TypeError: only integer tensors of a single element can be converted to an index
return {"input_ids" : batch_ids, "pos_tags" : batch_label_1, "chunk_tags" :
batch_label_2, "ner_tags" : batch_label_3}
return collate_fn
def get_dataloader(dataset, batch_size, pad_index, shuffle=False):
collate_fn = get_collate_fn(pad_index)
data_loader = torch.utils.data.DataLoader(
dataset = dataset,
batch_size = batch_size,
collate_fn = collate_fn,
shuffle = shuffle,
)
return data_loader```
`your text`
I tried to convert the batch_ids to torch tensor by batch_ids = torch.tensor(batch_ids), it didnt work , before i was not converting each input_ids into tensor the batch_ids was only a list , but still was not working saying TypeError: expected Tensor as element 0 in argument 0, but got list
Подробнее здесь: https://stackoverflow.com/questions/794 ... or-padding
Pytorch не принимает тензоры токенов для прокладки ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение