Недостаточно памяти для полностью подключенного слоя для 3D-тензора (PyTorch) - PullRequest
0 голосов
/ 27 марта 2020

Я новичок в 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 полностью связанных слоев, наносимых независимо для каждого элемента. Однако я понятия не имею, как это реализовать.

Скорее всего, я неправильно понял некоторые аспекты этого. Как получается, что я могу построить этот слой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...