def build(self, hp, inputs=None): inputs = nest.flatten(inputs) utils.validate_num_inputs(inputs, 1) input_node = inputs[0] output_node = input_node kernel_size = self.kernel_size or hp.Choice("kernel_size", [3, 5, 7], default=3) num_blocks = self.num_blocks or hp.Choice("num_blocks", [1, 2, 3], default=2) num_layers = self.num_layers or hp.Choice("num_layers", [1, 2], default=2) separable = self.separable if separable is None: separable = hp.Boolean("separable", default=False) if separable: conv = layer_utils.get_sep_conv(input_node.shape) else: conv = layer_utils.get_conv(input_node.shape) max_pooling = self.max_pooling if max_pooling is None: max_pooling = hp.Boolean("max_pooling", default=True) pool = layer_utils.get_max_pooling(input_node.shape) if self.dropout is not None: dropout = self.dropout else: dropout = hp.Choice("dropout", [0.0, 0.25, 0.5], default=0) for i in range(num_blocks): for j in range(num_layers): output_node = conv( hp.Choice( "filters_{i}_{j}".format(i=i, j=j), [16, 32, 64, 128, 256, 512], default=32, ), kernel_size, padding=self._get_padding(kernel_size, output_node), activation="relu", )(output_node) if max_pooling: output_node = pool( kernel_size - 1, padding=self._get_padding(kernel_size - 1, output_node), )(output_node) if dropout > 0: output_node = layers.Dropout(dropout)(output_node) return output_node
def build(self, hp, inputs=None): inputs = nest.flatten(inputs) utils.validate_num_inputs(inputs, 1) input_node = inputs[0] output_node = input_node kernel_size = utils.add_to_hp(self.kernel_size, hp) separable = self.separable if separable is None: separable = hp.Boolean("separable", default=False) if separable: conv = layer_utils.get_sep_conv(input_node.shape) else: conv = layer_utils.get_conv(input_node.shape) max_pooling = self.max_pooling if max_pooling is None: max_pooling = hp.Boolean("max_pooling", default=True) pool = layer_utils.get_max_pooling(input_node.shape) for i in range(utils.add_to_hp(self.num_blocks, hp)): for j in range(utils.add_to_hp(self.num_layers, hp)): output_node = conv( utils.add_to_hp( self.filters, hp, "filters_{i}_{j}".format(i=i, j=j) ), kernel_size, padding=self._get_padding(kernel_size, output_node), activation="relu", )(output_node) if max_pooling: output_node = pool( kernel_size - 1, padding=self._get_padding(kernel_size - 1, output_node), )(output_node) if utils.add_to_hp(self.dropout, hp) > 0: output_node = layers.Dropout(utils.add_to_hp(self.dropout, hp))( output_node ) return output_node