Объединение по оси 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).

Другие вопросы по тегам