def __init__(self, name, in_ch, ch, res_scale_fac, act_type, bn_mom, use_se, shortcut, pool_type): super(_RiseBlockB, self).__init__(name, ch, res_scale_fac, act_type, bn_mom, use_se, shortcut) self.body = HybridSequential(prefix="") self.branches = HybridConcurrent(axis=1, prefix="") # entry point for all branches ch_0_0 = ch_1_0 = 32 ch_1_1 = ch_1_2 = ch_0_2 = ch_0_1 = 96 ch_2_0 = 192 # Too many local variables (18/15) with self.name_scope(): # branch 0 self.b_0 = HybridSequential() self.b_0.add(get_pool(pool_type, pool_size=(2, 2), strides=(2, 2))) self.b_0.add(Conv2D(channels=ch_0_0, kernel_size=(1, 1), in_channels=in_ch)) self.b_0.add(get_act(act_type)) self.b_0.add( Conv2D(channels=ch_0_1, kernel_size=(3, 1), padding=(0, 1), in_channels=ch_0_0, use_bias=False) ) self.b_0.add( Conv2D(channels=ch_0_2, kernel_size=(1, 3), padding=(1, 0), in_channels=ch_0_1, use_bias=False) ) self.b_0.add(_UpsampleBlock("upsample0", scale=2)) # branch 1 self.b_1 = HybridSequential() self.b_1.add(Conv2D(channels=ch_1_0, kernel_size=(1, 1), in_channels=in_ch)) self.b_1.add(get_act(act_type)) self.b_1.add( Conv2D(channels=ch_1_1, kernel_size=(3, 1), padding=(0, 1), in_channels=ch_1_0, use_bias=False) ) self.b_1.add( Conv2D(channels=ch_1_2, kernel_size=(1, 3), padding=(1, 0), in_channels=ch_1_1, use_bias=False) ) # branch 2 self.b_2 = HybridSequential() self.b_2.add(Conv2D(channels=ch_2_0, kernel_size=(1, 1), in_channels=in_ch, use_bias=False)) # concatenate all branches and add them to the body self.branches.add(self.b_0) self.branches.add(self.b_1) self.branches.add(self.b_2) self.body.add(self.branches)
def __init__(self, name, in_ch, ch, res_scale_fac, act_type, bn_mom, use_se, shortcut, pool_type): """ IN 8x8: 256 TOTAL BRANCH 0 b_0 b_0 b_0_0 -> 24 Conv 1x1 -> POOL2D 2x2 -> 32 Conv 3x3 -> 24-> 32 BRANCH 1 b_0 b_0 b_0_0 -> 24 Conv 1x1 -> POOL2D 4x4 -> 32 Conv 2x2 -> 24-> 32 BRANCH 2 -> 24 Conv 1x1 -> 32 Conv 3x3 -> 24 -> 32 BRANCH 3 -> 24 Conv 1x1 -> 24 Conv 3x1 -> 24 Conv 1x3 -> 24 -> 48 BRANCH 4 -> 24 Conv 1x1 -> 24 Conv 5x1 -> 24 Conv 1x5 -> 24 -> 48 BRANCH 5 -> 24 Conv 1x1 -> 24 Conv 3x1 -> 32 Conv 1x3 -> 24 Conv 1x3 -> 32 Conv 3x1 -> 24 -> 64 """ super(_RiseBlockA, self).__init__(name, ch, res_scale_fac, act_type, bn_mom, use_se, shortcut) self.body = HybridSequential(prefix="") # entry point for all branches self.branches = HybridConcurrent(axis=1, prefix="") ch_0_0 = 42 ch_0_1 = 64 ch_1_0 = 32 ch_1_1 = 32 ch_2_0 = 64 ch_2_1 = 96 ch_2_2 = 128 with self.name_scope(): # branch 0 self.b_0 = HybridSequential() self.b_0.add(get_pool(pool_type, pool_size=(2, 2), strides=(2, 2))) self.b_0.add( Conv2D(channels=ch_0_0, kernel_size=(1, 1), in_channels=in_ch)) self.b_0.add(get_act(act_type)) self.b_0.add( Conv2D(channels=ch_0_1, kernel_size=(3, 3), padding=(1, 1), in_channels=ch_0_0, use_bias=True)) self.b_0.add(get_act(act_type)) self.b_0.add(_UpsampleBlock("upsample0", scale=2)) # branch 1 self.b_1 = HybridSequential() self.b_1.add(get_pool(pool_type, pool_size=(4, 4), strides=(4, 4))) self.b_1.add( Conv2D(channels=ch_1_0, kernel_size=(1, 1), in_channels=in_ch, use_bias=True)) self.b_1.add(get_act(act_type)) self.b_1.add( Conv2D(channels=ch_1_1, kernel_size=(3, 3), padding=(1, 1), in_channels=ch_1_0, use_bias=True)) self.b_1.add(get_act(act_type)) self.b_1.add(_UpsampleBlock("upsample0", scale=4)) # branch 1 # self.b_1 = HybridSequential() # self.b_1.add(Conv2D(channels=ch_1_0, kernel_size=(1, 1), in_channels=in_ch, use_bias=False)) # self.b_1.add(get_act(act_type)) # branch 2 self.b_2 = HybridSequential() self.b_2.add( Conv2D(channels=ch_2_0, kernel_size=(1, 1), in_channels=in_ch)) self.b_2.add(get_act(act_type)) self.b_2.add( Conv2D(channels=ch_2_1, kernel_size=(3, 3), padding=(1, 1), in_channels=ch_2_0, use_bias=True)) self.b_2.add(get_act(act_type)) self.b_2.add( Conv2D(channels=ch_2_2, kernel_size=(3, 3), padding=(1, 1), in_channels=ch_2_1, use_bias=True)) self.b_2.add(get_act(act_type)) # concatenate all branches and add them to the body self.branches.add(self.b_0) self.branches.add(self.b_1) self.branches.add(self.b_2) # self.branches.add(self.b_3) # self.branches.add(self.b_4) self.body.add(self.branches) self.body.add( Conv2D( channels=ch, kernel_size=(1, 1), prefix="%s_conv0" % name, in_channels=ch_0_1 + ch_1_1 + ch_2_2, use_bias=False, )) # +ch_3_2+ch_4_2