Пример #1
0
def test_three_classes():
    y = np.array(['a', 'a', 'c', 'b'])
    head = head_module.ClassificationHead(name='a')
    adapter = head.get_adapter()
    adapter.fit_transform(y)
    head.config_from_adapter(adapter)
    assert head.loss.name == 'categorical_crossentropy'
Пример #2
0
def test_clf_head_with_2_clases_get_label_encoder():
    head = head_module.ClassificationHead(name="a", num_classes=2)
    head._encoded = False
    head._labels = ["a", "b"]
    assert isinstance(
        head.get_hyper_preprocessors()[-1].preprocessor, preprocessors.LabelEncoder
    )
Пример #3
0
def test_clf_head_get_multi_label_preprocessor():
    head = head_module.ClassificationHead(name="a", multi_label=True)
    head._encoded = True
    assert isinstance(
        head.get_hyper_preprocessors()[0].preprocessor,
        preprocessors.MultiLabelEncoder,
    )
Пример #4
0
def test_three_classes():
    y = np.array(["a", "a", "c", "b"])
    head = head_module.ClassificationHead(name="a")
    adapter = head.get_adapter()
    adapter.fit_transform(y)
    head.config_from_adapter(adapter)
    assert head.loss.name == "categorical_crossentropy"
Пример #5
0
def test_clf_head_get_sigmoid_postprocessor():
    head = head_module.ClassificationHead(name="a", multi_label=True)
    head._encoded = True
    head._encoded_for_sigmoid = True
    assert isinstance(
        head.get_hyper_preprocessors()[0].preprocessor,
        preprocessors.SigmoidPostprocessor,
    )
Пример #6
0
def test_multi_label_loss():
    head = head_module.ClassificationHead(name='a', multi_label=True, num_classes=8)
    head.output_shape = (8,)
    input_node = tf.keras.Input(shape=(5,))
    output_node = head.build(kerastuner.HyperParameters(), input_node)
    model = tf.keras.Model(input_node, output_node)
    assert model.layers[-1].activation.__name__ == 'sigmoid'
    assert head.loss.name == 'binary_crossentropy'
Пример #7
0
def test_clf_head_build_with_zero_dropout_return_tensor():
    block = head_module.ClassificationHead(dropout=0, shape=(8,))

    outputs = block.build(
        keras_tuner.HyperParameters(),
        tf.keras.Input(shape=(5,), dtype=tf.float32),
    )

    assert len(nest.flatten(outputs)) == 1
Пример #8
0
def test_two_classes():
    y = np.array(['a', 'a', 'a', 'b'])
    head = head_module.ClassificationHead(name='a')
    adapter = head.get_adapter()
    adapter.fit_transform(y)
    head.config_from_adapter(adapter)
    head.output_shape = (1,)
    head.build(kerastuner.HyperParameters(), input_module.Input(shape=(32,)).build())
    assert head.loss.name == 'binary_crossentropy'
Пример #9
0
def test_three_classes_infer_categorical_crossentropy():
    dataset = np.array(["a", "a", "c", "b"])
    head = head_module.ClassificationHead(name="a", shape=(1,))
    adapter = head.get_adapter()
    dataset = adapter.adapt(dataset, batch_size=32)
    analyser = head.get_analyser()
    for data in dataset:
        analyser.update(data)
    analyser.finalize()
    head.config_from_analyser(analyser)
    head.build(
        keras_tuner.HyperParameters(),
        input_module.Input(shape=(32,)).build_node(keras_tuner.HyperParameters()),
    )
    assert head.loss.name == "categorical_crossentropy"
Пример #10
0
def test_clf_head_hpps_with_uint8_contain_cast_to_int32():
    dataset = utils.generate_one_hot_labels(100, 10, "dataset")
    dataset = dataset.map(lambda x: tf.cast(x, tf.uint8))
    head = head_module.ClassificationHead(shape=(8, ))
    analyser = head.get_analyser()
    for data in dataset:
        analyser.update(data)
    analyser.finalize()
    head.config_from_analyser(analyser)

    assert any([
        isinstance(hpp, hyper_preprocessors.DefaultHyperPreprocessor)
        and isinstance(hpp.preprocessor, preprocessors.CastToInt32)
        for hpp in head.get_hyper_preprocessors()
    ])