def test_image_blocks(tmp_path): num_instances = 10 (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train = x_train[:num_instances] y_regression = utils.generate_data(num_instances=num_instances, shape=(1, )) input_node = ak.ImageInput() output = ak.Normalization()(input_node) output = ak.ImageAugmentation()(output) outputs1 = ak.ResNetBlock(version="v2")(output) outputs2 = ak.XceptionBlock()(output) output_node = ak.Merge()((outputs1, outputs2)) output_node = ak.ClassificationHead()(output_node) automodel = ak.AutoModel( inputs=input_node, outputs=output_node, directory=tmp_path, max_trials=1, seed=utils.SEED, ) automodel.fit(x_train, y_regression, validation_data=(x_train, y_regression), epochs=1)
def test_image_blocks(tmp_path): num_instances = 10 x_train = test_utils.generate_data(num_instances=num_instances, shape=(28, 28)) y_train = np.random.randint(0, 10, num_instances) input_node = ak.ImageInput() output = ak.Normalization()(input_node) output = ak.ImageAugmentation()(output) outputs1 = ak.ResNetBlock(version="v2")(output) outputs2 = ak.XceptionBlock()(output) output_node = ak.Merge()((outputs1, outputs2)) output_node = ak.ClassificationHead()(output_node) automodel = ak.AutoModel( inputs=input_node, outputs=output_node, directory=tmp_path, max_trials=1, seed=test_utils.SEED, ) automodel.fit(x_train, y_train, validation_data=(x_train, y_train), epochs=1)
def test_functional_api(tmp_dir): # Prepare the data. num_instances = 20 (image_x, train_y), (test_x, test_y) = mnist.load_data() (text_x, train_y), (test_x, test_y) = common.imdb_raw() (structured_data_x, train_y), (test_x, test_y) = common.dataframe_numpy() image_x = image_x[:num_instances] text_x = text_x[:num_instances] structured_data_x = structured_data_x[:num_instances] classification_y = common.generate_one_hot_labels( num_instances=num_instances, num_classes=3) regression_y = common.generate_data(num_instances=num_instances, shape=(1, )) # Build model and train. image_input = ak.ImageInput() output = ak.Normalization()(image_input) output = ak.ImageAugmentation()(output) outputs1 = ak.ResNetBlock(version='next')(image_input) outputs2 = ak.XceptionBlock()(image_input) image_output = ak.Merge()((outputs1, outputs2)) structured_data_input = ak.StructuredDataInput( column_names=common.COLUMN_NAMES_FROM_CSV, column_types=common.COLUMN_TYPES_FROM_CSV) structured_data_output = ak.FeatureEngineering()(structured_data_input) structured_data_output = ak.DenseBlock()(structured_data_output) text_input = ak.TextInput() outputs1 = ak.TextToIntSequence()(text_input) outputs1 = ak.EmbeddingBlock()(outputs1) outputs1 = ak.ConvBlock(separable=True)(outputs1) outputs1 = ak.SpatialReduction()(outputs1) outputs2 = ak.TextToNgramVector()(text_input) outputs2 = ak.DenseBlock()(outputs2) text_output = ak.Merge()((outputs1, outputs2)) merged_outputs = ak.Merge()( (structured_data_output, image_output, text_output)) regression_outputs = ak.RegressionHead()(merged_outputs) classification_outputs = ak.ClassificationHead()(merged_outputs) automodel = ak.GraphAutoModel( inputs=[image_input, text_input, structured_data_input], directory=tmp_dir, outputs=[regression_outputs, classification_outputs], max_trials=2, seed=common.SEED) automodel.fit((image_x, text_x, structured_data_x), (regression_y, classification_y), validation_split=0.2, epochs=2)
def test_functional_api(tmp_path): # Prepare the data. num_instances = 80 (image_x, train_y), (test_x, test_y) = mnist.load_data() (text_x, train_y), (test_x, test_y) = utils.imdb_raw() (structured_data_x, train_y), (test_x, test_y) = utils.dataframe_numpy() image_x = image_x[:num_instances] text_x = text_x[:num_instances] structured_data_x = structured_data_x[: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. image_input = ak.ImageInput() output = ak.Normalization()(image_input) output = ak.ImageAugmentation()(output) outputs1 = ak.ResNetBlock(version='next')(output) outputs2 = ak.XceptionBlock()(output) image_output = ak.Merge()((outputs1, outputs2)) structured_data_input = ak.StructuredDataInput() structured_data_output = ak.CategoricalToNumerical()(structured_data_input) structured_data_output = ak.DenseBlock()(structured_data_output) text_input = ak.TextInput() outputs1 = ak.TextToIntSequence()(text_input) outputs1 = ak.Embedding()(outputs1) outputs1 = ak.ConvBlock(separable=True)(outputs1) outputs1 = ak.SpatialReduction()(outputs1) outputs2 = ak.TextToNgramVector()(text_input) outputs2 = ak.DenseBlock()(outputs2) text_output = ak.Merge()((outputs1, outputs2)) merged_outputs = ak.Merge()( (structured_data_output, image_output, text_output)) regression_outputs = ak.RegressionHead()(merged_outputs) classification_outputs = ak.ClassificationHead()(merged_outputs) automodel = ak.AutoModel( inputs=[image_input, text_input, structured_data_input], directory=tmp_path, outputs=[regression_outputs, classification_outputs], max_trials=2, tuner=ak.Hyperband, seed=utils.SEED) automodel.fit((image_x, text_x, structured_data_x), (regression_y, classification_y), validation_split=0.2, epochs=1)
def test_xception_block(tmp_dir): x_train = np.random.rand(100, 32, 32, 3) y_train = np.random.randint(10, size=100) y_train = tf.keras.utils.to_categorical(y_train) input_node = ak.Input() output_node = input_node output_node = ak.XceptionBlock()(output_node) output_node = ak.ClassificationHead()(output_node) input_node.shape = (32, 32, 3) output_node[0].shape = (10, ) graph = ak.GraphAutoModel(input_node, output_node, directory=tmp_dir) model = graph.build(kerastuner.HyperParameters()) model.fit(x_train, y_train, epochs=1, batch_size=100, verbose=False) result = model.predict(x_train) assert result.shape == (100, 10)
def test_xception_block(_, tmp_dir): x_train = np.random.rand(100, 32, 32, 3) y_train = np.random.randint(10, size=100) y_train = tf.keras.utils.to_categorical(y_train) input_node = ak.Input() output_node = input_node output_node = ak.XceptionBlock()(output_node) output_node = ak.ClassificationHead()(output_node) input_node.shape = (32, 32, 3) output_node[0].shape = (10,) graph = ak.GraphAutoModel(input_node, output_node, directory=tmp_dir, max_trials=1) graph.fit(x_train, y_train, epochs=1, batch_size=100, verbose=False, validation_split=0.2)
import numpy as np import tensorflow as tf from keras.datasets import mnist # Prepare the data. (x_train, y_classification), (x_test, y_test) = mnist.load_data() x_image = x_train.reshape(x_train.shape + (1,)) x_test = x_test.reshape(x_test.shape + (1,)) x_structured = np.random.rand(x_train.shape[0], 100) y_regression = np.random.rand(x_train.shape[0], 1) # Build model and train. inputs = ak.ImageInput(shape=(28, 28, 1)) outputs1 = ak.ResNetBlock(version='next')(inputs) outputs2 = ak.XceptionBlock()(inputs) image_outputs = ak.Merge()((outputs1, outputs2)) structured_inputs = ak.StructuredInput() structured_outputs = ak.DenseBlock()(structured_inputs) merged_outputs = ak.Merge()((image_outputs, structured_outputs)) classification_outputs = ak.ClassificationHead()(merged_outputs) regression_outputs = ak.RegressionHead()(merged_outputs) automodel = ak.GraphAutoModel(inputs=inputs, outputs=[regression_outputs, classification_outputs]) automodel.fit((x_image, x_structured), (y_regression, y_classification), trials=100,