def _test_base_tuner(): def build_model(hp): return hp.Int("a", 1, 100) tuner = SimpleTuner( oracle=kt.oracles.RandomSearch(objective=kt.Objective( "score", "max"), max_trials=10), hypermodel=build_model, directory=tmp_dir, ) tuner.search() # Only worker makes it to this point, server runs until thread stops. assert dist_utils.has_chief_oracle() assert not dist_utils.is_chief_oracle() assert isinstance(tuner.oracle, kt.distribute.oracle_client.OracleClient) barrier.wait(60) # Model is just a score. scores = tuner.get_best_models(10) assert len(scores) assert scores == sorted(copy.copy(scores), reverse=True)
def _test_random_search(): def build_model(hp): model = keras.Sequential() model.add(keras.layers.Dense(3, input_shape=(5, ))) for i in range(hp.Int("num_layers", 1, 3)): model.add( keras.layers.Dense(hp.Int("num_units_%i" % i, 1, 3), activation="relu")) model.add(keras.layers.Dense(1, activation="sigmoid")) model.compile("sgd", "binary_crossentropy") return model x = np.random.uniform(-1, 1, size=(2, 5)) y = np.ones((2, 1)) tuner = kt.tuners.RandomSearch( hypermodel=build_model, objective="val_loss", max_trials=10, directory=tmp_dir, ) # Only worker makes it to this point, server runs until thread stops. assert dist_utils.has_chief_oracle() assert not dist_utils.is_chief_oracle() assert isinstance(tuner.oracle, kt.distribute.oracle_client.OracleClient) tuner.search(x, y, validation_data=(x, y), epochs=1, batch_size=2) # Suppress warnings about optimizer state not being restored by tf.keras. tf.get_logger().setLevel(logging.ERROR) trials = tuner.oracle.get_best_trials(2) assert trials[0].score <= trials[1].score models = tuner.get_best_models(2) assert models[0].evaluate(x, y) <= models[1].evaluate(x, y)