def test_fit_predict_HolE(): model = HolE(batches_count=1, seed=555, epochs=20, k=10, loss='pairwise', loss_params={'margin': 1}, regularizer='LP', regularizer_params={'lambda': 0.1, 'p': 2}, optimizer='adagrad', optimizer_params={'lr':0.1}) X = np.array([['a', 'y', 'b'], ['b', 'y', 'a'], ['a', 'y', 'c'], ['c', 'y', 'a'], ['a', 'y', 'd'], ['c', 'y', 'd'], ['b', 'y', 'c'], ['f', 'y', 'e']]) model.fit(X) y_pred, _ = model.predict(np.array([['f', 'y', 'e'], ['b', 'y', 'd']]), get_ranks=True) print(y_pred) assert y_pred[0] > y_pred[1]
def select_kge(kge_name, batch_size, epochs, seed, verbose): model = '' # Select kge_name if kge_name == 'complex': # ComplEx model model = ComplEx( batches_count=batch_size, epochs=epochs, k=150, eta=20, optimizer='adam', optimizer_params={'margin': 5}, #,'lr':learning_rate}, # default lr:0.1 loss='multiclass_nll', loss_params={}, regularizer='LP', regularizer_params={ 'p': 2, 'lambda': 1e-4 }, seed=seed, verbose=verbose) elif kge_name == 'hole': # HolE model model = HolE(batches_count=batch_size, epochs=epochs, k=100, eta=20, optimizer='adam', optimizer_params={'lr': learning_rate}, loss='multiclass_nll', regularizer='LP', regularizer_params={ 'p': 3, 'lambda': 1e-5 }, seed=seed, verbose=verbose) elif kge_name == 'transe': # TransE model model = TransE( batches_count=batch_size, epochs=epochs, k=350, eta=20, optimizer='adam', optimizer_params={'margin': 5}, #,'lr':learning_rate}, # default lr:0.1 loss='multiclass_nll', #loss='pairwise', loss_params={}, #loss_params={'margin:5'}, regularizer='LP', regularizer_params={ 'p': 2, 'lambda': 1e-4 }, seed=seed, verbose=verbose) else: sys.exit('Given kge_name is not valid.') return model
log_file = open("eval_log.txt", "a") print("\n\n----"+log_key+"----", file=log_file) print("------------------------------------------------") print("%d) Implementation Model: %s" % (1, mdl[j])) print("------------------------------------------------") start_time = time.time() # START: Training Time Tracker K.clear_session() # Kills current TF comp-graph & creates a new one if (mdl[j] == "ComplEx"): model = ComplEx(verbose=True) elif (mdl[j] == "ConvKB"): model = ConvKB(verbose=True) elif (mdl[j] == "DistMult"): model = DistMult(verbose=True) elif (mdl[j] == "HolE"): model = HolE(verbose=True) elif (mdl[j] == "TransE"): model = TransE(verbose=True) elif (mdl[j] == "RandomBaseline"): model = RandomBaseline(verbose=True) tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR) # TensorFlow will tell you all messages that have the label ERROR model.fit(train_X) # Save model at its best-performance point save_model(model, 'best_ampliGraph_model.pkl') del model # Delete older model # Load recently save best-performance model model = restore_model('./best_ampliGraph_model.pkl') if model.is_fitted: print('The model is fit!') else:
# International football matches triples url = 'https://ampligraph.s3-eu-west-1.amazonaws.com/datasets/football.csv' open('football.csv', 'wb').write(requests.get(url).content) X = load_from_csv('.', 'football.csv', sep=',')[:, 1:] # Train test split X_train, X_test = train_test_split_no_unseen(X, test_size=10000) # ComplEx model model = HolE(batches_count=50, epochs=300, k=100, eta=20, optimizer='adam', optimizer_params={'lr': 1e-4}, loss='multiclass_nll', regularizer='LP', regularizer_params={ 'p': 3, 'lambda': 1e-5 }, seed=0, verbose=True) model.fit(X_train) filter_triples = np.concatenate((X_train, X_test)) ranks = evaluate_performance(X_test, model=model, filter_triples=filter_triples, use_default_protocol=True, verbose=True)