#deep-learning #pytorch #conv-neural-network #resnet
#глубокое обучение #pytorch #conv-нейронная сеть #resnet
Вопрос:
Я использую модель Resnet50 и хочу визуализировать функции определенного слоя conv2d после пересылки изображения по сети, но почему-то я не могу получить доступ к внутренним слоям conv2d в блоках Bottleneck.
Мой код до сих пор:
def forward_res(model, conv_layer, x):
count = 0
for child in model.children(): #outer layers
x = child(x)
if isinstance(child, nn.Conv2d):
if count == conv_layer:
return x
count = count 1
if isinstance(child, nn.Sequential):
for bottleneck in child:
for lay in bottleneck.children(): #inner layers
x = lay(x)
if isinstance(lay, nn.Conv2d):
if count == conv_layer:
return x
count = count 1
Когда я пытаюсь использовать свой код подобным образом, я получаю следующую ошибку:
Ошибка времени выполнения: заданные группы = 1, вес размера 1 3 1 1, ожидаемый ввод [1, 1, 512, 512] должен иметь 3 канала, но вместо этого получил 1 канал
Может кто-нибудь помочь мне, как получить доступ к внутренним слоям conv2d модели Renset? Или скажите мне, что не так с моим кодом?
Комментарии:
1. Следите за формой вашего входного тензора. Если у вас есть один слой в качестве входных данных, вы можете дублировать слой три раза на 2-м dim :
x.repeat(1, 3, 1, 1)
.