def build(self, hp, inputs=None): input_node = nest.flatten(inputs)[0] output_node = input_node block_type = self.block_type or hp.Choice( 'block_type', ['resnet', 'xception', 'vanilla'], default='resnet') normalize = self.normalize if normalize is None: normalize = hp.Choice('normalize', [True, False], default=True) augment = self.augment if augment is None: augment = hp.Choice('augment', [True, False], default=True) if normalize: output_node = preprocessor.Normalization()(output_node) if augment: output_node = preprocessor.ImageAugmentation( seed=self.seed)(output_node) sub_block_name = self.name + '_' + block_type if block_type == 'resnet': output_node = block.ResNetBlock(name=sub_block_name)(output_node) elif block_type == 'xception': output_node = block.XceptionBlock(name=sub_block_name)(output_node) elif block_type == 'vanilla': output_node = block.ConvBlock(name=sub_block_name)(output_node) return output_node
def test_conv_block(): input_shape = (32, 32, 3) block = block_module.ConvBlock() hp = kerastuner.HyperParameters() block.build(hp, ak.Input(shape=input_shape).build()) assert name_in_hps('kernel_size', hp) assert name_in_hps('num_blocks', hp) assert name_in_hps('separable', hp)
def build(self, hp, inputs=None): input_node = nest.flatten(inputs)[0] output_node = input_node block_type = self.block_type or hp.Choice( 'block_type', ['resnet', 'xception', 'vanilla'], default='resnet') if block_type == 'resnet': output_node = block.ResNetBlock()(output_node) elif block_type == 'xception': output_node = block.XceptionBlock()(output_node) elif block_type == 'vanilla': output_node = block.ConvBlock().build(output_node) return output_node
def assemble(self, input_node): output_node = input_node ratio = self.sw_ratio() if not isinstance(input_node, node.TextNode): raise ValueError('The input_node should be a TextNode.') if ratio < 1500: output_node = processor.TextToNgramVector()(output_node) output_node = block.DenseBlock()(output_node) else: output_node = processor.TextToIntSequence()(output_node) output_node = block.EmbeddingBlock( pretrained=(ratio < 15000))(output_node) output_node = block.ConvBlock(separable=True)(output_node) return output_node
def build(self, hp, inputs=None): input_node = nest.flatten(inputs)[0] output_node = input_node vectorizer = self.vectorizer or hp.Choice( 'vectorizer', ['sequence', 'ngram'], default='sequence') if not isinstance(input_node, node.TextNode): raise ValueError('The input_node should be a TextNode.') if vectorizer == 'ngram': output_node = preprocessor.TextToNgramVector()(output_node) output_node = block.DenseBlock()(output_node) else: output_node = preprocessor.TextToIntSequence()(output_node) output_node = block.EmbeddingBlock( pretraining=self.pretraining)(output_node) output_node = block.ConvBlock(separable=True)(output_node) return output_node
def test_type_error_for_call(): block = block_module.ConvBlock() with pytest.raises(TypeError) as info: block(block) assert 'Expect the inputs to layer' in str(info.value)