예제 #1
0
    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
예제 #2
0
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)
예제 #3
0
    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
예제 #4
0
 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
예제 #5
0
 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
예제 #6
0
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)