print(ResNet3dPathway(**rgb_pathway).lateral)
输出:True
print(ResNet3dPathway(**rgb_pathway).lateral_activate[0]==1)
输出:False
print(ResNet3dPathway(**rgb_pathway).stage_blocks)
输出:(3, 4, 6, 3)
print(len(ResNet3dPathway(**rgb_pathway).stage_blocks))
输出:4
print(ResNet3dPathway(**rgb_pathway).base_channels * 2**0)
输出:64
print(ResNet3dPathway(**rgb_pathway).block.expansion)
输出:4
print(ResNet3dPathway(**rgb_pathway).lateral_activate[1])
输出:0
if条件不成立,于是不执行下面的语句,继续回到for循环这个时候i从0变成了1
这个时候if条件发现成立
print(ResNet3dPathway(**rgb_pathway).base_channels * 2**1)
输出:128
print(ResNet3dPathway(**rgb_pathway).lateral_activate[2])
输出:1
print(ResNet3dPathway(**rgb_pathway).lateral_inv)
输出:False
print(ResNet3dPathway(**rgb_pathway).lateral_connections)
输出:['layer2_lateral', 'layer3_lateral']
print(ResNet3dPathway(**rgb_pathway).lateral_activate[3])
输出:1
(layer2_lateral): ConvModule(
(conv): Conv3d(128, 128, kernel_size=(7, 1, 1), stride=(4, 1, 1), padding=(3, 0, 0), bias=False)
)
(layer3_lateral): ConvModule(
(conv): Conv3d(256, 256, kernel_size=(7, 1, 1), stride=(4, 1, 1), padding=(3, 0, 0), bias=False)
)
经过比对发现完全参数和自己手动计算完全一致
下面这两条语句是不管执行if还是执行else,接下来都会执行下面两句
setattr(self, lateral_name, conv_module)
self.lateral_connections.append(lateral_name)
https://github.com/kennymckormick/pyskl/blob/main/pyskl/models/cnns/resnet3d_slowfast.py