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)
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
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.'
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.'
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
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)
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)
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
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