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
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
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
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)
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)