stage_blocks=None,什么意思?

    arch_settings = {
        18: (BasicBlock3d, (2, 2, 2, 2)),
        34: (BasicBlock3d, (3, 4, 6, 3)),
        50: (Bottleneck3d, (3, 4, 6, 3)),
        101: (Bottleneck3d, (3, 4, 23, 3)),
        152: (Bottleneck3d, (3, 8, 36, 3))
    }

    def __init__(self,
                 depth=50,
                 pretrained=None,
                 stage_blocks=None,
                 pretrained2d=True,
                 in_channels=3,
                 num_stages=4,
                 base_channels=64,
                 out_indices=(3, ),
                 spatial_strides=(1, 2, 2, 2),
                 temporal_strides=(1, 1, 1, 1),
                 conv1_kernel=(3, 7, 7),
                 conv1_stride=(1, 2),
                 pool1_stride=(1, 2),
                 advanced=False,
                 frozen_stages=-1,
                 inflate=(1, 1, 1, 1),
                 inflate_style='3x1x1',
                 conv_cfg=dict(type='Conv3d'),
                 norm_cfg=dict(type='BN3d', requires_grad=True),
                 act_cfg=dict(type='ReLU', inplace=True),
                 norm_eval=False,
                 zero_init_residual=True):

这个 arch_settings 字典为不同深度的 ResNet 模型提供了标准的残差块数量配置。

当 stage_blocks 参数被设置为 None 时,表示使用 arch_settings 中为当前 depth 设置的默认配置。也就是说,如果你传入一个 ResNet50 模型(depth=50),那么 stage_blocks 参数会被自动设置为 (3, 4, 6, 3)。

但是如果你想覆盖这个默认配置,可以手动传入一个 4 元素的元组或列表作为 stage_blocks 的值。这样就可以自定义每个阶段使用的残差块数量,而不受 arch_settings 的限制。

总之,stage_blocks 的默认值 None 表示使用 arch_settings 中预定义的标准配置,如果需要自定义可以通过设置这个参数来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值