def METHOD_NAME(self):
    in_channels = self.output_channels[0]
    self.prev_blob = brew.conv(self.model, self.prev_blob, 'stage1_conv',
                               self.num_input_channels, in_channels,
                               weight_init=("MSRAFill", {}),
                               kernel=3, stride=2)
    self.prev_blob = brew.max_pool(self.model, self.prev_blob,
                                   'stage1_pool', kernel=3, stride=2)
    # adds stage#{2,3,4}; see table 5 of the ShufflenetV2 paper.
    for idx, (out_channels, n_repeats) in enumerate(zip(
        self.output_channels[1:4], self.stage_repeats
    )):
        prefix = 'stage{}_stride{}'.format(idx + 2, 2)
        self.add_spatial_ds_unit(prefix, in_channels, out_channels)
        in_channels = out_channels
        for i in range(n_repeats):
            prefix = 'stage{}_stride{}_repeat{}'.format(
                idx + 2, 1, i + 1
            )
            self.add_basic_unit(prefix, in_channels)
    self.last_conv = brew.conv(self.model, self.prev_blob, 'conv5',
                               in_channels, self.output_channels[4],
                               kernel=1)
    self.avg_pool = self.model.AveragePool(self.last_conv, 'avg_pool',
                                           kernel=7)
    self.last_out = brew.fc(self.model,
                            self.avg_pool,
                            'last_out_L{}'.format(self.num_labels),
                            self.output_channels[4],
                            self.num_labels)