def test_image_block_augment_return_tensor(): block = blocks.ImageBlock(augment=True) outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
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_spatial_build_return_tensor(): block = blocks.SpatialReduction() outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_dense_build_return_tensor(): block = blocks.DenseBlock( num_units=keras_tuner.engine.hyperparameters.Choice( "num_units", [10, 20])) outputs = block.build(keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, ), dtype=tf.float32)) assert len(nest.flatten(outputs)) == 1
def test_resnet_pretrained_build_return_tensor(): block = blocks.ResNetBlock(pretrained=True) outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_resnet_pretrained_with_one_channel_input(): block = blocks.ResNetBlock(pretrained=True) outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(28, 28, 1), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_resnet_v1_return_tensor(): block = blocks.ResNetBlock(version="v1") outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_efficientnet_b0_return_tensor(): block = blocks.EfficientNetBlock(version="b0", pretrained=False) outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_rnn_build_return_tensor(): block = blocks.RNNBlock(bidirectional=False) outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 10), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_conv_build_with_dropout_return_tensor(): block = blocks.ConvBlock(dropout=0.5) outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_conv_with_small_image_size_return_tensor(): block = blocks.ConvBlock() outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(10, 10, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_augment_build_with_vflip_only_return_tensor(): block = blocks.ImageAugmentation(vertical_flip=True, horizontal_flip=False) outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_augment_build_with_zoom_factor_return_tensor(): block = blocks.ImageAugmentation(zoom_factor=0.1) outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_cat_to_num_build_return_tensor(): block = blocks.CategoricalToNumerical() block.column_names = ["a"] block.column_types = {"a": "num"} outputs = block.build(keras_tuner.HyperParameters(), tf.keras.Input(shape=(1, ), dtype=tf.string)) assert len(nest.flatten(outputs)) == 1
def test_temporal_global_avg_return_tensor(): block = blocks.TemporalReduction(reduction_type="global_avg") outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 10), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_xception_build_return_tensor(): block = blocks.XceptionBlock() outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 32, 2), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_clf_head_build_with_zero_dropout_return_tensor(): block = head_module.ClassificationHead(dropout=0, shape=(8, )) outputs = block.build( keras_tuner.HyperParameters(), keras.Input(shape=(5, ), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_merge_single_input_return_tensor(): block = blocks.Merge() outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32,), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_image_block_xception_return_tensor(): block = blocks.ImageBlock(block_type="xception") outputs = block.build( keras_tuner.HyperParameters(), keras.Input(shape=(32, 32, 3), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_multi_label_loss(): head = head_module.ClassificationHead(name="a", multi_label=True, num_classes=8, shape=(8, )) input_node = keras.Input(shape=(5, )) output_node = head.build(keras_tuner.HyperParameters(), input_node) model = keras.Model(input_node, output_node) assert model.layers[-1].activation.__name__ == "sigmoid" assert head.loss.name == "binary_crossentropy"
def test_txt_clf_init_hp0_equals_hp_of_a_model(tmp_path): clf = ak.TextClassifier(directory=tmp_path) clf.inputs[0].shape = (1, ) clf.outputs[0].in_blocks[0].shape = (10, ) init_hp = task_specific.TEXT_CLASSIFIER[0] hp = keras_tuner.HyperParameters() hp.values = copy.copy(init_hp) clf.tuner.hypermodel.build(hp) assert set(init_hp.keys()) == set(hp._hps.keys())
def test_graph_basics(): input_node = ak.Input(shape=(30, )) output_node = input_node output_node = ak.DenseBlock()(output_node) output_node = ak.RegressionHead(shape=(1, ))(output_node) model = graph_module.Graph(inputs=input_node, outputs=output_node).build( keras_tuner.HyperParameters()) assert model.input_shape == (None, 30) assert model.output_shape == (None, 1)
def _get_hyperparameters() -> kt.HyperParameters: """Returns hyperparameters for building a TFDF model.""" hp = kt.HyperParameters() # Defines search space. # For a complete list of configuration parameters of learners, please refer to # https://github.com/google/yggdrasil-decision-forests/blob/main/documentation/learners.md hp.Int('max_depth', 3, 8, default=6) hp.Float('shrinkage', 0.01, 0.1, default=0.1) hp.Boolean('use_hessian_gain', default=False) return hp
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_resnet_pretrained_error_with_two_channels(): block = blocks.ResNetBlock(pretrained=True) with pytest.raises(ValueError) as info: block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(224, 224, 2), dtype=tf.float32), ) assert "When pretrained is set to True" in str(info.value)
def test_rnn_input_shape_one_dim_error(): block = blocks.RNNBlock() with pytest.raises(ValueError) as info: block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, ), dtype=tf.float32), ) assert "Expect the input tensor of RNNBlock" in str(info.value)
def test_timeseries_build_return_tensor(): block = blocks.TimeseriesBlock() block.column_names = ["0", "1"] block.column_types = {"0": analysers.NUMERICAL, "1": analysers.NUMERICAL} outputs = block.build( keras_tuner.HyperParameters(), tf.keras.Input(shape=(32, 2), dtype=tf.float32), ) assert len(nest.flatten(outputs)) == 1
def test_reduction_2d_tensor_return_input_node(): block = blocks.TemporalReduction() input_node = keras.Input(shape=(32,), dtype=tf.float32) outputs = block.build( keras_tuner.HyperParameters(), input_node, ) assert len(nest.flatten(outputs)) == 1 assert nest.flatten(outputs)[0] is input_node
def test_greedy_oracle_populate_space_with_no_hp(get_best_trials): hp = keras_tuner.HyperParameters() oracle = greedy.GreedyOracle(objective="val_loss", seed=utils.SEED) trial = mock.Mock() trial.hyperparameters = hp get_best_trials.return_value = [trial] oracle.update_space(hp) values_a = oracle.populate_space("a")["values"] assert len(values_a) == 0
def test_merge(): input_node1 = ak.Input(shape=(30, )) input_node2 = ak.Input(shape=(40, )) output_node1 = ak.DenseBlock()(input_node1) output_node2 = ak.DenseBlock()(input_node2) output_node = ak.Merge()([output_node1, output_node2]) output_node = ak.RegressionHead(shape=(1, ))(output_node) model = graph_module.Graph(inputs=[input_node1, input_node2], outputs=output_node).build( keras_tuner.HyperParameters()) assert model.input_shape == [(None, 30), (None, 40)] assert model.output_shape == (None, 1)