RuntimeError: данные группы = 1, вес размера [32, 3, 16, 16, 16], ожидаемый вход [100, 16, 16, 16, 3] будет иметь 3 канала, но вместо этого получил 16 каналов - PullRequest
0 голосов
/ 16 июня 2020

RuntimeError: данные группы = 1, вес размера [32, 3, 16, 16, 16], ожидаемый вход [100, 16, 16, 16, 3] будет иметь 3 канала, но вместо этого получил 16 каналов

Это та часть кода, где, как мне кажется, проблема.

def __init__(self):
        super(Lightning_CNNModel, self).__init__()

        self.conv_layer1 = self._conv_layer_set(3, 32)
        self.conv_layer2 = self._conv_layer_set(32, 64)
        self.fc1 = nn.Linear(2**3*64, 128)
        self.fc2 = nn.Linear(128, 10)   # num_classes = 10
        self.relu = nn.LeakyReLU()
        self.batch=nn.BatchNorm1d(128)
        self.drop=nn.Dropout(p=0.15)

    def _conv_layer_set(self, in_c, out_c):
        conv_layer = nn.Sequential(
            nn.Conv3d(in_c, out_c, kernel_size=(3, 3, 3), padding=0),
            nn.LeakyReLU(),
            nn.MaxPool3d((2, 2, 2)),
        )

        return conv_layer



    def forward(self, x):
        out = self.conv_layer1(x)
        out = self.conv_layer2(out)
        out = out.view(out.size(0), -1)
        out = self.fc1(out)
        out = self.relu(out)
        out = self.batch(out)
        out = self.drop(out)
        out = self.fc2(out)

        return out

Это код, над которым я работаю

1 Ответ

0 голосов
/ 16 июня 2020

nn.Conv3d ожидает, что вход будет иметь размер [размер_пакета, каналы, глубина, высота, ширина] . Первая свертка ожидает 3 канала, но с вашим входным размером [100, 16 , 16, 16, 3] , это будет 16 каналов.

Предполагая что ваши данные указаны как [размер_пакета, глубина, высота, ширина, каналы] , вам нужно поменять местами размеры, что можно сделать с помощью torch.Tensor.permute:

# From: [batch_size, depth, height, width, channels]
# To: [batch_size, channels, depth, height, width]
input = input.permute(0, 4, 1, 2, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...