Я пытаюсь добавить тензоры (t), сгенерированные в for-l oop, в список [T], который накапливает все эти тензоры. Затем список [T] необходимо преобразовать в тензор и загрузить в графический процессор.
b_output = []
for eachInputId, eachMask in zip(b_input_ids, b_input_mask):
# unrolled into each individual document
# print(eachInputId.size()) # individual document here
outputs = model(eachInputId,
token_type_ids=None,
attention_mask=eachMask)
# combine the [CLS] output layer to form the document
doc_output = torch.mean(outputs[1], dim=0) # size = [1, ncol]
b_output.append( doc_output )
t_b_output = torch.tensor( b_output )
Еще один метод, который я попробовал, - инициализация тензора {T} с фиксированными размерами и добавление к нему тензоров (t) из for-l oop.
b_output = torch.zeros(batch_size, hidden_units)
b_output.to(device) # cuda device
for index, (eachInputId, eachMask) in enumerate(zip(b_input_ids, b_input_mask)):
# unrolled into each individual document
# print(eachInputId.size()) # individual document here
outputs = model(eachInputId,
token_type_ids=None,
attention_mask=eachMask)
# combine the [CLS] output layer to form the document
doc_output = torch.mean(outputs[1], dim=0) # size = [1, ncol]
b_output[index] = doc_output
* 1006. * Выполнение любого из этих действий приводит к этой ошибке:
RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 11.17 GiB total capacity; 10.65 GiB already allocated; 2.81 MiB free; 10.86 GiB reserved in total by PyTorch)
Я предполагаю, что это происходит из-за добавления тензоров (которые на GPU) в список (конечно, не на GPU), а затем пытается преобразовать список в тензор (это не на GPU).
Что можно сделать, чтобы добавить эти тензоры к другому тензору и затем загрузить тензор в графический процессор для дальнейшей обработки?
Буду благодарен за любые подсказки или информацию.