![Image describing the pack and unpacking operation](https://i.stack.imgur.com/P4aaQ.png)
Привет, у меня есть тензор «A» в Pytorch dimesnsions Batch x Channel x Height x Width. Я хочу преобразовать его в «B» так, чтобы размеры H и W увеличивались на «r», а каналы уменьшались в «r ^ 2». Для 'r' = 2 рисунок показан на прилагаемом рисунке. На рисунке, если «B» имел 4 канала, то первые 4 канала, причем 4-й канал имел фиолетовый цвет границы, тогда первые четыре канала в «A» будут пикселями пикового / телесного цвета с красными, зелеными, синими и фиолетовыми цветами границы и оставшимися. каналы настроены соответствующим образом.
Я знаю, что «pack» и «unpack» могут быть выполнены с двумя петлями for. Но на это нужно больше времени. В PyTorch должен быть векторизованный способ переключения между «A» и «B» с помощью только команд изменения формы и изменения. Может ли кто-нибудь помочь мне в этом?
В этом примере размер пакета установлен на 1. Но если размер пакета больше, я бы хотел, чтобы операции, показанные на рисунке, выполнялись индивидуально для каждой записи пакета.
Может ли кто-нибудь помочь мне с общим кодом c для переключения между A и B векторизованным способом в PyTorch. Лучше, если это также работает, когда размер пакета больше 1.
Обратите внимание, что две операции не могут быть выполнены с уже реализованным nn.PixelShuffle
Большое спасибо.