示例#1
0
def test_io_api(tmp_path):
    num_instances = 100
    (image_x, train_y), (test_x, test_y) = mnist.load_data()
    (text_x, train_y), (test_x,
                        test_y) = utils.imdb_raw(num_instances=num_instances)

    image_x = image_x[:num_instances]
    text_x = text_x[:num_instances]
    structured_data_x = utils.generate_structured_data(
        num_instances=num_instances)
    classification_y = utils.generate_one_hot_labels(
        num_instances=num_instances, num_classes=3)
    regression_y = utils.generate_data(num_instances=num_instances,
                                       shape=(1, ))

    # Build model and train.
    automodel = ak.AutoModel(
        inputs=[ak.ImageInput(),
                ak.TextInput(),
                ak.StructuredDataInput()],
        outputs=[
            ak.RegressionHead(metrics=['mae']),
            ak.ClassificationHead(loss='categorical_crossentropy',
                                  metrics=['accuracy'])
        ],
        directory=tmp_path,
        max_trials=2,
        seed=utils.SEED)
    automodel.fit([image_x, text_x, structured_data_x],
                  [regression_y, classification_y],
                  epochs=1,
                  validation_split=0.2)
示例#2
0
def test_structured_reg_fit_call_auto_model_fit(fit, tmp_path):
    auto_model = ak.StructuredDataRegressor(directory=tmp_path,
                                            seed=utils.SEED)

    auto_model.fit(x=utils.generate_structured_data(num_instances=100),
                   y=utils.generate_data(num_instances=100, shape=(1, )))

    assert fit.is_called
示例#3
0
def test_time_series_input_col_type_without_name():
    num_data = 500
    train_x = utils.generate_structured_data(num_data)
    with pytest.raises(ValueError) as info:
        adapter = input_adapter.TimeseriesInputAdapter(
            lookback=2, column_types=utils.COLUMN_TYPES_FROM_NUMPY)
        adapter.transform(train_x)
    assert str(info.value) == 'Column names must be specified.'
示例#4
0
def test_structured_data_input_col_type_without_name():
    num_data = 500
    train_x = utils.generate_structured_data(num_data)
    with pytest.raises(ValueError) as info:
        input_node = input_adapter.StructuredDataInputAdapter(
            column_types=utils.COLUMN_TYPES_FROM_NUMPY)
        input_node.transform(train_x)
    assert str(info.value) == 'Column names must be specified.'
示例#5
0
def test_structured_clf_fit_call_auto_model_fit(fit, tmp_path):
    auto_model = ak.StructuredDataClassifier(directory=tmp_path, seed=utils.SEED)

    auto_model.fit(
        x=utils.generate_structured_data(num_instances=100),
        y=utils.generate_one_hot_labels(num_instances=100, num_classes=3))

    assert fit.is_called
示例#6
0
def test_structured_data_from_numpy_classifier(tmp_path):
    num_data = 500
    num_train = 400
    data = utils.generate_structured_data(num_data)
    x_train, x_test = data[:num_train], data[num_train:]
    y = utils.generate_one_hot_labels(num_instances=num_data, num_classes=3)
    y_train, y_test = y[:num_train], y[num_train:]
    clf = ak.StructuredDataClassifier(directory=tmp_path,
                                      max_trials=1,
                                      seed=utils.SEED)
    clf.fit(x_train, y_train, epochs=2, validation_data=(x_train, y_train))
    clf.export_model()
    assert clf.predict(x_test).shape == (len(y_test), 3)
示例#7
0
def test_structured_data_from_numpy_regressor(tmp_path):
    num_data = 500
    num_train = 400
    data = utils.generate_structured_data(num_data)
    x_train, x_test = data[:num_train], data[num_train:]
    y = utils.generate_data(num_instances=num_data, shape=(1, ))
    y_train, y_test = y[:num_train], y[num_train:]
    clf = ak.StructuredDataRegressor(directory=tmp_path,
                                     max_trials=2,
                                     seed=utils.SEED)
    clf.fit(x_train, y_train, epochs=11, validation_data=(x_train, y_train))
    clf.export_model()
    assert clf.predict(x_test).shape == (len(y_test), 1)
示例#8
0
def test_structured_regressor(init, fit, tmp_dir):
    num_data = 500
    train_x = utils.generate_structured_data(num_data)
    train_y = utils.generate_data(num_instances=100, shape=(1,))

    clf = structured_data.StructuredDataRegressor(
        column_names=utils.COLUMN_NAMES_FROM_NUMPY,
        directory=tmp_dir,
        max_trials=1,
        seed=utils.SEED)
    clf.fit(train_x, train_y, epochs=2, validation_data=(train_x, train_y))

    assert init.called
    assert fit.called
示例#9
0
def test_structured_classifier(init, fit, tmp_dir):
    num_data = 500
    train_x = utils.generate_structured_data(num_data)
    train_y = utils.generate_one_hot_labels(num_instances=num_data, num_classes=3)

    clf = structured_data.StructuredDataClassifier(
        column_names=utils.COLUMN_NAMES_FROM_NUMPY,
        directory=tmp_dir,
        max_trials=1,
        seed=utils.SEED)
    clf.fit(train_x, train_y, epochs=2, validation_data=(train_x, train_y))

    assert init.called
    assert fit.called