为啥 resnet50 的 MaxPool2d 层在 tensorboard 中可视化时会输出 2 个张量?

Posted

技术标签:

【中文标题】为啥 resnet50 的 MaxPool2d 层在 tensorboard 中可视化时会输出 2 个张量?【英文标题】:Why the MaxPool2d layer of resnet50 outputs 2 tensors when it is visualized in the tensorboard?为什么 resnet50 的 MaxPool2d 层在 tensorboard 中可视化时会输出 2 个张量? 【发布时间】:2021-09-23 01:28:11 【问题描述】:

我想知道为什么 resnet50 的 MaxPool2d 层在张量板中可视化时会输出 2 个张量? resnet50的可视化和代码如下图所示。谢谢!

代码:

import torchvision
import torch
from tensorboardX import SummaryWriter
import torch.nn as nn
model = torchvision.models.resnet50(pretrained=False)
dummy_input=torch.rand((10, 3, 224, 224))
with SummaryWriter(comment='Net1')as w:
    w.add_graph(model, (dummy_input,))

图片:

【问题讨论】:

不是 100% 确定,但它可能正在存储反向传播可能需要的最大索引 【参考方案1】:

ResNet 中最大池旁边的块有一个残差连接:这意味着该块的输入在 conv 层之间拆分,并且“直接”路径将添加到该块的 conv 的输出中。

此残留链接在此图中标记为“身份”:

【讨论】:

谢谢你的回答!@Shai 我同意你的看法。另外,我还有一个问题,为什么 Bottleneck0 中的 Sequential[downsample](此残差链接标记为“身份”。)还向 Bottleneck1 输出 15 个张量,如图 2 所示?如图 3 所示,这 15 个张量被输入到 Bottleneck1 中的不同位置。我们如何寻找这 15 个张量的含义?我们如何理解这个操作? [图2][1][图3][2][1]:i.stack.imgur.com/4m8zB.jpg[2]:i.stack.imgur.com/5C1Qx.jpg 我在其他网络比如Senet也看到了一些类似的情况,但是输入到其他block的张量数达到了81个,是不是tensorboard的特殊内部优化操作?

以上是关于为啥 resnet50 的 MaxPool2d 层在 tensorboard 中可视化时会输出 2 个张量?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SHAP 的 Deep Explainer 在 ResNet-50 预训练模型上失败?

resnet-50 pytorch之结构分析

使用 keras ResNet50 模型进行二进制分类的输出层

Keras 替换输入层

修改 resnet 模型中的图层

resnet数据尺寸为单数