def main(): data_folder = './data/' # where the datasets are source_name = 'dvd' # source domain: books, dvd, kitchen, or electronics target_name = 'electronics' # traget domain: books, dvd, kitchen, or electronics adversarial = False # set to False to learn a standard NN hidden_layer_size = 50 lambda_adapt = 0.1 if adversarial else 0. learning_rate = 0.001 maxiter = 200 print("Loading data...") xs, ys, xt, _, xtest, ytest = load_amazon(source_name, target_name, data_folder, verbose=True) nb_valid = int(0.1 * len(ys)) xv, yv = xs[-nb_valid:, :], ys[-nb_valid:] xs, ys = xs[0:-nb_valid, :], ys[0:-nb_valid] print("Fit...") algo = DANN(lambda_adapt=lambda_adapt, hidden_layer_size=hidden_layer_size, learning_rate=learning_rate, maxiter=maxiter, epsilon_init=None, seed=12342, adversarial_representation=adversarial, verbose=True) for i in range(100000): for j in range(100000): algo.fit(xs, ys, xt, xv, yv) print("Predict...") prediction_train = algo.predict(xs) prediction_valid = algo.predict(xv) prediction_test = algo.predict(xtest) print('Training Risk = %f' % np.mean(prediction_train != ys)) print('Validation Risk = %f' % np.mean(prediction_valid != yv)) print('Test Risk = %f' % np.mean(prediction_test != ytest)) print('==================================================================') print('Computing PAD on DANN representation...') pad_dann = compute_proxy_distance(algo.hidden_representation(xs), algo.hidden_representation(xt), verbose=True) print('PAD on DANN representation = %f' % pad_dann) print('==================================================================') print('Computing PAD on original data...') pad_original = compute_proxy_distance(xs, xt, verbose=True) print('PAD on original data = %f' % pad_original)
def main(): data_folder = './data/' # where the datasets are source_name = 'dvd' # source domain: books, dvd, kitchen, or electronics target_name = 'electronics' # traget domain: books, dvd, kitchen, or electronics adversarial = False # set to False to learn a standard NN hidden_layer_size = 50 lambda_adapt = 0.1 if adversarial else 0. learning_rate = 0.001 maxiter = 200 print("Loading data...") xs, ys, xt, _, xtest, ytest = load_amazon(source_name, target_name, data_folder, verbose=True) nb_valid = int(0.1 * len(ys)) xv, yv = xs[-nb_valid:, :], ys[-nb_valid:] xs, ys = xs[0:-nb_valid, :], ys[0:-nb_valid] print("Fit...") algo = DANN(lambda_adapt=lambda_adapt, hidden_layer_size=hidden_layer_size, learning_rate=learning_rate, maxiter=maxiter, epsilon_init=None, seed=12342, adversarial_representation=adversarial, verbose=True) algo.fit(xs, ys, xt, xv, yv) print("Predict...") prediction_train = algo.predict(xs) prediction_valid = algo.predict(xv) prediction_test = algo.predict(xtest) print('Training Risk = %f' % np.mean(prediction_train != ys)) print('Validation Risk = %f' % np.mean(prediction_valid != yv)) print('Test Risk = %f' % np.mean(prediction_test != ytest)) print('==================================================================') print('Computing PAD on DANN representation...') pad_dann = compute_proxy_distance(algo.hidden_representation(xs), algo.hidden_representation(xt), verbose=True) print('PAD on DANN representation = %f' % pad_dann) print('==================================================================') print('Computing PAD on original data...') pad_original = compute_proxy_distance(xs, xt, verbose=True) print('PAD on original data = %f' % pad_original)
def main(): data_folder = './data/' # where the datasets are source_name = 'dvd' # source domain: books, dvd, kitchen, or electronics target_name = 'electronics' # traget domain: books, dvd, kitchen, or electronics adversarial = False # set to False to learn a standard NN msda = True hidden_layer_size = 50 lambda_adapt = 0.1 if adversarial else 0. learning_rate = 0.001 if not msda else 0.0001 maxiter = 200 print("Loading data...") xs, ys, xt, _, xtest, ytest = load_amazon(source_name, target_name, data_folder, verbose=True) if msda: xs_path, xt_path, xtest_path = ['%s/%s.%s_%s_msda.npy' % (data_folder, source_name, target_name, E) for E in ('source', 'target', 'test')] try: xs_msda = np.load(xs_path) xt_msda = np.load(xt_path) xtest_msda = np.load(xtest_path) print('mSDA representations loaded from disk') except: print('Computing mSDA representations...') xs_msda, xt_msda, xtest_msda = compute_msda_representation(xs, xt, xtest) np.save(xs_path, xs_msda) np.save(xt_path, xt_msda) np.save(xtest_path, xtest_msda) xs, xt, xtest = xs_msda, xt_msda, xtest_msda nb_valid = int(0.1 * len(ys)) xv, yv = xs[-nb_valid:, :], ys[-nb_valid:] xs, ys = xs[0:-nb_valid, :], ys[0:-nb_valid] print("Fit...") algo = DANN(lambda_adapt=lambda_adapt, hidden_layer_size=hidden_layer_size, learning_rate=learning_rate, maxiter=maxiter, epsilon_init=None, seed=12342, adversarial_representation=adversarial, verbose=True) algo.fit(xs, ys, xt, xv, yv) print("Predict...") prediction_train = algo.predict(xs) prediction_valid = algo.predict(xv) prediction_test = algo.predict(xtest) print('Training Risk = %f' % np.mean(prediction_train != ys)) print('Validation Risk = %f' % np.mean(prediction_valid != yv)) print('Test Risk = %f' % np.mean(prediction_test != ytest)) print('==================================================================') print('Computing PAD on DANN representation...') pad_dann = compute_proxy_distance(algo.hidden_representation(xs), algo.hidden_representation(xt), verbose=True) print('PAD on DANN representation = %f' % pad_dann) print('==================================================================') print('Computing PAD on original data...') pad_original = compute_proxy_distance(xs, xt, verbose=True) print('PAD on original data = %f' % pad_original)