Код: Выделить всё
with self.maybe_autocast():
outputs = self.llama_model(
input_ids=None,
inputs_embeds=concat_inputs_embeds,
attention_mask=mask,
labels=targets
)
loss = outputs.loss
return loss
targets — это целевые токены .
Когда я запускаю код, я получаю следующую ошибку:
Код: Выделить всё
loss = model(batch)
^^^^^^^^^^^^
..........
outputs = self.llama_model(
^^^^^^^^^^^^^^^^^
.........
ValueError: Expected input batch_size (156) to match target batch_size (114).
conncat_inputs_embeds.shape: torch.Size([2, 79, 4096])
targets.shape: torch.Size([2, 58])
2:batch_size
79/58:length
4096:feature_dim
Интуитивно, нам нужны только выходные данные и метка должна иметь одинаковую длину для расчета потери перекрестной энтропии, так почему мне нужно сопоставлять длину входных данных и длину метки?
Что мне делать, если длина моих входных данных и длина метки естественным образом равны противоречиво?
Я попробовал добавить в метку несколько токенов (например, пакетный размер=2, прокладка_длина=30),
ошибка изменилась:
Код: Выделить всё
ValueError: Expected input batch_size (156) to match target batch_size (174).
Как я могу решить эту проблему. Спасибо!!
Подробнее здесь: https://stackoverflow.com/questions/793 ... imension-e