Объединение по оси z PyTorch Dataloader
У меня есть набор мультиспектральных данных с 9 полосами. Поскольку данных очень много, я разбил каждую полосу на 256 x 256 отсчетов. Итак, у меня есть 16 таких сэмплов для каждой группы, и я сохранил их в разные папки. Как теперь объединить каждый образец из 9 полос?
Например, я хочу объединить 1-й образец из данных 1-го диапазона с 1-м образцом 2-го диапазона, с 1-м образцом 3-го диапазона и т. Д. До 9-го диапазона. Затем 2-й образец 1-го, 2-го ... 9-го диапазона. так до 16-го образца.
1 ответ
Вы можете сделать это с помощью (torch.stack)[https://pytorch.org/docs/stable/generated/torch.stack.html] или (torch.cat)[https://pytorch.org/docs/stable/ сгенерировано / torch.cat.html]
Например, сгенерируем несколько случайных матриц размером 256x256:
import torch
a = torch.FloatTensor(256,256).uniform_(0,1)
b = torch.FloatTensor(256,256).uniform_(0,1)
Первый способ: вы можете объединить тензоры с помощью torch.stack.
c = torch.stack((a,b),axis=2)
Второй способ: Или torch.cat
c = torch.cat((a.reshape(256,256,-1),b.reshape(256,256,-1)),axis=2)
Основное отличие состоит в том, что в то время как torch.stack объединяется по новой оси, torch.cat может объединяться только по существующим осям (поэтому необходима команда reshape).