def test_simple_network(): searcher = Searcher() searcher.register_trial('hidden_size', [64, 128, 256, 512, 1024]) searcher.register_trial('batchsize', [32, 64, 128, 256, 512, 1024]) searcher.register_trial('lr', [0.05, 0.1, 0.2, 0.3, 0.4, 0.5]) n_trials = 30 model_kwargs = dict( input_dim=3, n_train_epochs=200, ) _ = searcher.search(objectve, n_trials=n_trials, deep_surrogate_model='tfdbonas.deep_surrogate_models:SimpleNetwork', n_random_trials=10, model_kwargs=model_kwargs) assert len(searcher.result) == n_trials warnings.warn('results = {}'.format(searcher.result)) warnings.warn('best_trial {}'.format(searcher.best_trial)) warnings.warn('best_value {}'.format(searcher.best_value))
]) return m if __name__ == '__main__': m1 = create_modal() m2 = create_modal() m = m1 + m2 m.append_lazy(keras.layers.Dense, [ dict(units=10, activation='softmax'), ]) g = Generator(m, dump_nn_graph=True) g.draw_graph('/home/ono/Dropbox/test.png') num_nodes = 12 num_layer_type = 4 searcher = Searcher() searcher.register_trial('graph', g) n_trials = 30 model_kwargs = dict( num_nodes=num_nodes, input_channels=num_layer_type, n_train_epochs=400, ) _ = searcher.search(objectve, n_trials=n_trials, deep_surrogate_model= f'tfdbonas.deep_surrogate_models:GCNSurrogateModel', n_random_trials=10, model_kwargs=model_kwargs) print(searcher.result) print('best_trial', searcher.best_trial)
#!/usr/bin/env python import math from tfdbonas import Searcher, Trial import numpy as np def objectve(trial: Trial): # (x*, y*) = [1, 1] # f(x*, y*) = 0 o = 100 * (trial.y - trial.x**2)**2 + (trial.x - 1)**2 return -o if __name__ == '__main__': searcher = Searcher() searcher.register_trial('x', np.arange(-2.048, 2.048, 0.02)) searcher.register_trial('y', np.arange(-2.048, 2.048, 0.02)) model_kwargs = dict( input_dim=2, # coresponding to the number of register_trial n_train_epochs=200, ) n_trials = 20 _ = searcher.search( objectve, n_trials=n_trials, deep_surrogate_model='tfdbonas.deep_surrogate_models:SimpleNetwork', n_random_trials=10, model_kwargs=model_kwargs) assert len(searcher.result) == n_trials print('results = {}'.format(searcher.result))
(x_train, y_train), (x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 opt = tf.keras.optimizers.SGD(learning_rate=0.01) #trial.lr) model.compile(optimizer=opt, loss='sparse_categorical_crossentropy', metrics=['accuracy']) mnist = input_data.read_data_sets("/tmp/data/", one_hot=True) model.fit(x_train, y_train, epochs=1, batch_size=128) #trial.batchsize) out = model.evaluate(x_test, y_test, verbose=2) accuracy = out[1] return accuracy if __name__ == '__main__': searcher = Searcher() searcher.register_trial('h1', [16, 32, 64, 128, 256, 512, 1024]) searcher.register_trial('h2', [16, 32, 64, 128, 256, 512, 1024]) searcher.register_trial('h3', [16, 32, 64, 128, 256, 512, 1024]) searcher.register_trial('h4', [16, 32, 64, 128, 256, 512, 1024]) # searcher.register_trial('batchsize', [32, 64, 128, 256, 512, 1024]) # searcher.register_trial('lr', [0.05, 0.1, 0.2, 0.3, 0.4, 0.5]) n_trials = 30 model_kwargs = dict( input_dim=4, n_train_epochs=200, ) _ = searcher.search( objectve, n_trials=n_trials,
def test_simple_network_with_categorical_features(): # (False, reason="categorical feature is not supported yet. [idea] I shoud apply embedding layers for categorical inputs.") searcher = Searcher() searcher.register_trial('hidden_size', [64, 128, 256, 512, 1024]) searcher.register_trial('batchsize', [32, 64, 128, 256, 512, 1024]) searcher.register_trial('lr', [0.05, 0.1, 0.2, 0.3, 0.4, 0.5]) searcher.register_trial('activation', [None, 'relu', 'tanh']) # n_trials = 30 model_kwargs = dict( input_dim=3, n_train_epochs=200, ) _ = searcher.search(objectve, n_trials=n_trials, deep_surrogate_model='tfdbonas.deep_surrogate_models:SimpleNetwork', n_random_trials=10, model_kwargs=model_kwargs) assert len(searcher.result) == n_trials warnings.warn('results = {}'.format(searcher.result)) warnings.warn('best_trial {}'.format(searcher.best_trial)) warnings.warn('best_value {}'.format(searcher.best_value))
def test_cnn_model_with_few_trials(): searcher = Searcher() searcher.register_trial('cnn_h1', [16, 64]) searcher.register_trial('cnn_k1', [1, 3]) searcher.register_trial('cnn_s1', [1]) searcher.register_trial('pool_k1', [1, 3]) searcher.register_trial('cnn_h2', [32, 64]) searcher.register_trial('cnn_k2', [1]) searcher.register_trial('cnn_s2', [1]) searcher.register_trial('pool_k2', [2, 3]) searcher.register_trial('cnn_h3', [64, 128]) searcher.register_trial('cnn_k3', [1, 3]) searcher.register_trial('cnn_s3', [1]) searcher.register_trial('pool_k3', [1, 3]) searcher.register_trial('fc1', [64, 128, 256]) searcher.register_trial('batchsize', [32, 64, 128]) searcher.register_trial('lr', [0.05, 0.1]) n_trials = 30 model_kwargs = dict( input_dim=15, n_train_epochs=200, ) warnings.warn('CNN: the number of trials = {}'.format(len(searcher))) _ = searcher.search(cnn_objectve, n_trials=n_trials, deep_surrogate_model='tfdbonas.deep_surrogate_models:SimpleNetwork', n_random_trials=10, model_kwargs=model_kwargs) assert len(searcher.result) == n_trials warnings.warn('CNN: results = {}'.format(searcher.result)) warnings.warn('CNN: best_trial {}'.format(searcher.best_trial)) warnings.warn('CNN: best_value {}'.format(searcher.best_value))
def test_cnn_model_with_few_trials(): searcher = Searcher() searcher.register_trial('cnn_h1', [16, 64]) searcher.register_trial('cnn_k1', [1, 3]) searcher.register_trial('cnn_s1', [1, 3]) searcher.register_trial('pool_k1', [1, 3]) searcher.register_trial('cnn_h2', [32, 64]) searcher.register_trial('cnn_k2', [1, 2]) searcher.register_trial('cnn_s2', [1, 2]) searcher.register_trial('pool_k2', [2, 3]) searcher.register_trial('cnn_h3', [64, 128]) searcher.register_trial('cnn_k3', [1, 3]) searcher.register_trial('cnn_s3', [1, 2]) searcher.register_trial('pool_k3', [1, 3]) searcher.register_trial('fc1', [64, 128, 256]) searcher.register_trial('batchsize', [32, 64, 128]) searcher.register_trial('lr', [0.05, 0.1]) n_trials = 30 model_kwargs = dict( input_dim=15, n_train_epochs=200, ) warnings.warn('CNN: the number of trials = {}'.format(len(searcher))) # CNN: the number of trials = 73728 # var = np.diag(np.matmul(np.matmul(predicted_bases, self.k_inv), predicted_bases.transpose()) + 1 / beta) # MemoryError: Unable to allocate array with shape (73718, 73718) and data type float64 _ = searcher.search(cnn_objectve, n_trials=n_trials, deep_surrogate_model='tfdbonas.deep_surrogate_models:SimpleNetwork', n_random_trials=10, model_kwargs=model_kwargs) assert len(searcher.result) == n_trials warnings.warn('CNN: results = {}'.format(searcher.result)) warnings.warn('CNN: best_trial {}'.format(searcher.best_trial)) warnings.warn('CNN: best_value {}'.format(searcher.best_value))