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 = utils.get_sep_conv(input_node.shape) else: conv = 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 = utils.get_max_pooling(input_node.shape) if self.dropout_rate is not None: dropout_rate = self.dropout_rate else: dropout_rate = hp.Choice('dropout_rate', [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_rate > 0: output_node = layers.Dropout(dropout_rate)(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 = 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) separable = self.separable if separable is None: separable = hp.Choice('separable', [True, False], default=False) if separable: conv = utils.get_sep_conv(input_node.shape) else: conv = utils.get_conv(input_node.shape) pool = utils.get_max_pooling(input_node.shape) for i in range(num_blocks): output_node = conv( hp.Choice('filters_{i}_1'.format(i=i), [16, 32, 64], default=32), kernel_size, padding=self._get_padding(kernel_size, output_node), activation='relu')(output_node) output_node = conv( hp.Choice('filters_{i}_2'.format(i=i), [16, 32, 64], default=32), kernel_size, padding=self._get_padding(kernel_size, output_node), activation='relu')(output_node) output_node = pool( kernel_size - 1, padding=self._get_padding(kernel_size - 1, output_node))(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 separable = self.separable if separable is None: separable = hp.Choice('separable', [True, False], default=False) if separable: conv = utils.get_sep_conv(input_node.shape) else: conv = utils.get_conv(input_node.shape) pool = utils.get_max_pooling(input_node.shape) dropout = utils.get_dropout(input_node.shape) kernel_size = hp.Choice('kernel_size', [3, 5, 7], default=3) dropout_rate = hp.Choice('dropout_rate', [0, 0.25, 0.5], default=0.5) for i in range(hp.Choice('num_blocks', [1, 2, 3], default=2)): if dropout_rate > 0: output_node = dropout(dropout_rate)(output_node) output_node = conv(hp.Choice('filters_{i}_1'.format(i=i), [16, 32, 64], default=32), kernel_size, padding=self._get_padding( kernel_size, output_node))(output_node) output_node = conv(hp.Choice('filters_{i}_2'.format(i=i), [16, 32, 64], default=32), kernel_size, padding=self._get_padding( kernel_size, output_node))(output_node) output_node = pool(kernel_size - 1, padding=self._get_padding( kernel_size - 1, output_node))(output_node) return output_node