def build(self, hp, inputs=None): inputs = nest.flatten(inputs) utils.validate_num_inputs(inputs, 1) input_node = inputs[0] output_node = input_node output_node = reduction.Flatten().build(hp, output_node) num_layers = self.num_layers or hp.Choice('num_layers', [1, 2, 3], default=2) use_batchnorm = self.use_batchnorm if use_batchnorm is None: use_batchnorm = hp.Boolean('use_batchnorm', default=False) 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_layers): units = hp.Choice('units_{i}'.format(i=i), [16, 32, 64, 128, 256, 512, 1024], default=32) output_node = layers.Dense(units)(output_node) if use_batchnorm: output_node = layers.BatchNormalization()(output_node) output_node = layers.ReLU()(output_node) if dropout_rate > 0: output_node = layers.Dropout(dropout_rate)(output_node) return output_node
def build(self, hp, inputs=None): if self.output_dim and self.output_shape[-1] != self.output_dim: raise ValueError('The data doesn\'t match the output_dim. ' 'Expecting {} but got {}'.format( self.output_dim, self.output_shape[-1])) inputs = nest.flatten(inputs) utils.validate_num_inputs(inputs, 1) input_node = inputs[0] output_node = input_node dropout_rate = self.dropout_rate or hp.Choice( 'dropout_rate', [0.0, 0.25, 0.5], default=0) if dropout_rate > 0: output_node = layers.Dropout(dropout_rate)(output_node) output_node = reduction.Flatten().build(hp, output_node) output_node = layers.Dense(self.output_shape[-1], name=self.name)(output_node) return output_node