Я новичок в Pytorch и пытаюсь реализовать трехмерную нейронную сеть.
У меня есть тензор Pytorch размера 112 (фильтры) x 20 x 20 x 20. Я должен пропустить это через полностью связанный слой, состоящий из 128 узлов. Поэтому на выходе должен быть тензор 128 (фильтры) x 20 x 20 x 20.
Наивно, я бы сгладил тензор и пропустил его через линейный слой Pytorch. Тем не менее, Pytorch хочет выделить 3417 ГБ ОЗУ для этого слоя, которого у меня (возможно, очевидно) нет.
Минимальный рабочий пример показан ниже:
import torch
import torch.nn as nn
test = torch.randn(112, 20, 20, 20)
test = test.view(-1, 112*20*20*20)
layer = nn.Linear(112*20*20*20, 128*20*20*20)
out = layer(test)
Что бы я хотел Для этого нужно применить Fully Connected Layer к каждому элементу размером 20x20x20. Это будет состоять из 20x20x20 полностью связанных слоев, наносимых независимо для каждого элемента. Однако я понятия не имею, как это реализовать.
Скорее всего, я неправильно понял некоторые аспекты этого. Как получается, что я могу построить этот слой?