コード例 #1
0
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))
コード例 #2
0
    ])
    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)
コード例 #3
0
#!/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))
コード例 #4
0
    (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,
コード例 #5
0
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))
コード例 #6
0
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))
コード例 #7
0
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))