def __stage(self, x, stage=2, repeat=3): if 2 <= stage <= 4: stage_layer = shufflenet_unit( 'stage' + str(stage) + '_0', x=x, w=None, num_groups=self.args.num_groups, group_conv_bottleneck=not (stage == 2), num_filters=self.output_channels[str( self.args.num_groups)][stage - 2], stride=(2, 2), fusion='concat', l2_strength=self.args.l2_strength, bias=self.args.bias, batchnorm_enabled=self.args.batchnorm_enabled, is_training=self.is_training) for i in range(1, repeat + 1): stage_layer = shufflenet_unit( 'stage' + str(stage) + '_' + str(i), x=stage_layer, w=None, num_groups=self.args.num_groups, group_conv_bottleneck=True, num_filters=self.output_channels[str( self.args.num_groups)][stage - 2], stride=(1, 1), fusion='add', l2_strength=self.args.l2_strength, bias=self.args.bias, batchnorm_enabled=self.args.batchnorm_enabled, is_training=self.is_training) return stage_layer else: raise ValueError("Stage should be from 2 -> 4")
def __stage(self, x, stage=2, repeat=3): if 2 <= stage <= 4: stage_layer = shufflenet_unit('stage' + str(stage) + '_0', x=x, w=None, num_groups=self.args.num_groups, group_conv_bottleneck=not (stage == 2),# stage = 2 时 先不进行分组点卷积 num_filters= self.output_channels[str(self.args.num_groups)][ stage - 2], stride=(2, 2),# concate通道扩展合并 fusion='concat', l2_strength=self.args.l2_strength, bias=self.args.bias, batchnorm_enabled=self.args.batchnorm_enabled, is_training=self.is_training) for i in range(1, repeat + 1): stage_layer = shufflenet_unit('stage' + str(stage) + '_' + str(i), x=stage_layer, w=None, num_groups=self.args.num_groups, group_conv_bottleneck=True,# 分组点卷积 num_filters=self.output_channels[ str(self.args.num_groups)][stage - 2], stride=(1, 1),#ADD 通道叠加 fusion='add', l2_strength=self.args.l2_strength, bias=self.args.bias, batchnorm_enabled=self.args.batchnorm_enabled, is_training=self.is_training) return stage_layer else: raise ValueError("Stage should be from 2 -> 4")