Я вижу несколько проблем с загруженной моделью Resnet50 из https://github.com/facebookresearch/semi-supervised-ImageNet1K-models. Может ли кто-нибудь помочь с вопросами, приведенными ниже?
>>> rn50=torch.hub.load('facebookresearch/semi-supervised-ImageNet1K-models', 'resnet50_ssl')
Downloading: "https://download.pytorch.org/models/resnet50-19c8e357.pth"
100.0%
>>> print(rn50)
ResNet(
(conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
(maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
(layer1): Sequential(
(0): Bottleneck(
(conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(1): Bottleneck(
(conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
>>> x = torch.zeros(1, 3, 224, 224, dtype=torch.float, requires_grad=False)
>>>
>>> make_dot(rn50(x)).render("rn50_attached")
'rn50_attached.pdf'
Вопросы:
- Почему только в узком месте-0, а не в узком месте-1 выше?
(downsample): Sequential(
(0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
Как увидеть, где определено / создано узкое место в модели re snet pytorch? На вышеприведенном принте (rn50) он просто используется и не определен. Я также пытался открыть файл .pth в блокноте, но в нем есть символы ascii
Как визуализировать узлы в прямом проходе? «rn50_attached.pdf» показывает все в Backward-pass с именами узлов, такими как Conv2dBackward, BatchNormBackward. Как их правильно визуализировать с помощью прямого именования?
Что такое Thnn
в ThnnConv2dBackward?
Сгенерированный PDF выглядит следующим образом .