def _assemble(self): """Assemble the Blocks based on the input output nodes.""" inputs = nest.flatten(self.inputs) outputs = nest.flatten(self.outputs) middle_nodes = [] for input_node in inputs: if isinstance(input_node, input_module.TextInput): middle_nodes.append(blocks.TextBlock()(input_node)) if isinstance(input_node, input_module.ImageInput): middle_nodes.append(blocks.ImageBlock()(input_node)) if isinstance(input_node, input_module.StructuredDataInput): middle_nodes.append(blocks.StructuredDataBlock()(input_node)) if isinstance(input_node, input_module.TimeseriesInput): middle_nodes.append(blocks.TimeseriesBlock()(input_node)) # Merge the middle nodes. if len(middle_nodes) > 1: output_node = blocks.Merge()(middle_nodes) else: output_node = middle_nodes[0] outputs = nest.flatten( [output_blocks(output_node) for output_blocks in outputs]) return graph_module.Graph(inputs=inputs, outputs=outputs)
def test_structured_get_config_has_all_attributes(): block = blocks.StructuredDataBlock() config = block.get_config() assert test_utils.get_func_args( blocks.StructuredDataBlock.__init__).issubset(config.keys())
def test_structured_block_normalize_return_tensor(): block = blocks.StructuredDataBlock(normalize=True) block.column_names = ["0", "1"] block.column_types = {"0": analysers.NUMERICAL, "1": analysers.NUMERICAL} outputs = block.build(keras_tuner.HyperParameters(), tf.keras.Input(shape=(2, ), dtype=tf.string)) assert len(nest.flatten(outputs)) == 1
def test_structured_block_search_normalize_return_tensor(): block = blocks.StructuredDataBlock(name="a") block.column_names = ["0", "1"] block.column_types = {"0": analysers.NUMERICAL, "1": analysers.NUMERICAL} hp = keras_tuner.HyperParameters() hp.values["a/" + blocks.wrapper.NORMALIZE] = True outputs = block.build(hp, tf.keras.Input(shape=(2, ), dtype=tf.string)) assert len(nest.flatten(outputs)) == 1
def test_structured_build_return_tensor(): block = blocks.StructuredDataBlock() block.column_names = ["0", "1"] block.column_types = {"0": adapters.NUMERICAL, "1": adapters.NUMERICAL} outputs = block.build(kerastuner.HyperParameters(), tf.keras.Input(shape=(2, ), dtype=tf.string)) assert len(nest.flatten(outputs)) == 1 assert isinstance(nest.flatten(outputs)[0], tf.Tensor)
def test_structured_deserialize_to_structured(): serialized_block = blocks.serialize(blocks.StructuredDataBlock()) block = blocks.deserialize(serialized_block) assert isinstance(block, blocks.StructuredDataBlock)
def get_block(self): return blocks.StructuredDataBlock()