Example #1
0
 def _insert_pooling_layer_chain(self, start_node_id, end_node_id):
     skip_output_id = start_node_id
     for layer in self._get_pooling_layers(start_node_id, end_node_id):
         new_layer = deepcopy(layer)
         if is_layer(new_layer, 'Conv'):
             filters = self.node_list[start_node_id].shape[-1]
             new_layer = get_conv_class(self.n_dim)(filters, filters, 1, layer.stride)
             if self.weighted:
                 init_conv_weight(new_layer)
         else:
             new_layer = deepcopy(layer)
         skip_output_id = self.add_layer(new_layer, skip_output_id)
     skip_output_id = self.add_layer(StubReLU(), skip_output_id)
     return skip_output_id
Example #2
0
 def _insert_pooling_layer_chain(self, start_node_id, end_node_id):
     skip_output_id = start_node_id
     for layer in self._get_pooling_layers(start_node_id, end_node_id):
         new_layer = deepcopy(layer)
         if is_layer(new_layer, 'Conv'):
             filters = self.node_list[start_node_id].shape[-1]
             kernel_size = layer.kernel_size if layer.padding != int(
                 layer.kernel_size / 2) or layer.stride != 1 else 1
             new_layer = get_conv_class(self.n_dim)(filters, filters, kernel_size, layer.stride,
                                                    padding=layer.padding)
             if self.weighted:
                 init_conv_weight(new_layer)
         else:
             new_layer = deepcopy(layer)
         skip_output_id = self.add_layer(new_layer, skip_output_id)
     skip_output_id = self.add_layer(StubReLU(), skip_output_id)
     return skip_output_id
Example #3
0
 def _insert_pooling_layer_chain(self, start_node_id, end_node_id):
     skip_output_id = start_node_id
     for layer in self._get_pooling_layers(start_node_id, end_node_id):
         new_layer = deepcopy(layer)
         if is_layer(new_layer, LayerType.CONV):
             filters = self.node_list[start_node_id].shape[-1]
             kernel_size = layer.kernel_size if layer.padding != int(
                 layer.kernel_size / 2) or layer.stride != 1 else 1
             new_layer = get_conv_class(self.n_dim)(filters, filters, kernel_size, layer.stride,
                                                    padding=layer.padding)
             if self.weighted:
                 init_conv_weight(new_layer)
         else:
             new_layer = deepcopy(layer)
         skip_output_id = self.add_layer(new_layer, skip_output_id)
     skip_output_id = self.add_layer(StubReLU(), skip_output_id)
     return skip_output_id
Example #4
0
    def to_deeper_model(self, target_id, new_layer):
        """Insert a relu-conv-bn block after the target block.

        Args:
            target_id: A convolutional layer ID. The new block should be inserted after the block.
            new_layer: An instance of StubLayer subclasses.
        """
        self.operation_history.append(('to_deeper_model', target_id, new_layer))
        input_id = self.layer_id_to_input_node_ids[target_id][0]
        output_id = self.layer_id_to_output_node_ids[target_id][0]
        if self.weighted:
            if is_layer(new_layer, 'Dense'):
                init_dense_weight(new_layer)
            elif is_layer(new_layer, 'Conv'):
                init_conv_weight(new_layer)
            elif is_layer(new_layer, 'BatchNormalization'):
                init_bn_weight(new_layer)

        self._insert_new_layers([new_layer], input_id, output_id)
Example #5
0
    def to_deeper_model(self, target_id, new_layer):
        """Insert a relu-conv-bn block after the target block.

        Args:
            target_id: A convolutional layer ID. The new block should be inserted after the block.
            new_layer: An instance of StubLayer subclasses.
        """
        self.operation_history.append(('to_deeper_model', target_id, new_layer))
        input_id = self.layer_id_to_input_node_ids[target_id][0]
        output_id = self.layer_id_to_output_node_ids[target_id][0]
        if self.weighted:
            if is_layer(new_layer, LayerType.DENSE):
                init_dense_weight(new_layer)
            elif is_layer(new_layer, LayerType.CONV):
                init_conv_weight(new_layer)
            elif is_layer(new_layer, LayerType.BATCH_NORM):
                init_bn_weight(new_layer)

        self._insert_new_layers([new_layer], input_id, output_id)