def main(): ap = argparse.ArgumentParser() ap.add_argument('--arch', required=True, nargs='+', type=int) ap.add_argument('--lr', required=False, type=int, default=.01) ap.add_argument('--epochs', required=False, type=int, default=100) ap.add_argument('--iters', required=True, type=int) ap.add_argument('--trials', required=True, type=int) ap.add_argument('--env', required=True) ap.add_argument('--t', required=True, type=int) opt = Options() opt.load_args(ap.parse_args()) opt.envname = opt.env opt.filename = '/Users/JonathanLee/experts/' + opt.envname + '.pkl' opt.env = gym.envs.make(opt.envname).env opt.sim = gym.envs.make(opt.envname).env opt.pi = load_policy.load_policy(opt.filename) opt.sess = tf.Session() opt.sup = NetSupervisor(opt.pi, opt.sess) plot_dir = utils.generate_plot_dir('initial', 'experts', vars(opt)) data_dir = utils.generate_data_dir('initial', 'experts', vars(opt)) if not os.path.exists(plot_dir): os.makedirs(plot_dir) if not os.path.exists(data_dir): os.makedirs(data_dir) opt.plot_dir = plot_dir opt.data_dir = data_dir train_errs = np.zeros((opt.trials, opt.t)) valid_errs = np.zeros((opt.trials, opt.t)) test_errs = np.zeros((opt.trials, opt.t)) for t in range(opt.trials): train_errs[t, :], valid_errs[t, :], test_errs[t, :] = run_trial(opt, t) train_err = np.mean(train_errs, axis=0) valid_err = np.mean(valid_errs, axis=0) test_err = np.mean(test_errs, axis=0) errs = [train_err, valid_err, test_err] labels = ['train', 'valid', 'test'] width = .2 index = np.arange(opt.t) for i, (err, label) in enumerate(zip(errs, labels)): plt.bar(index + i * width, err, width, label=label) plt.legend() plt.ylim(0, .75) plt.savefig('/Users/JonathanLee/Desktop/bar_original_avg.png') utils.clear()
def eval_baseline(weight, behavior): opt = Options().parse() opt.baseline = True opt.sequence_length = 20 opt.behavior_layer = 0 opt.data_dir = '../data/' + behavior print("Model Config: ", opt) model = Model(opt) model.load_weight(weight) return model.evaluate(0, keep_frame=True)
def eval_proposed(weight, use_haptic, use_audio, use_virbo, behavior): opt = Options().parse() opt.use_behavior = True opt.use_haptic = use_haptic opt.use_audio = use_audio opt.use_vibro = False opt.behavior_layer = 1 opt.aux = True opt.sequence_length = 20 opt.data_dir = '../data/' + behavior print("Model Config: ", opt) model = Model(opt) model.load_weight(weight) return model.evaluate(0, keep_frame=True)
def main(): ap = argparse.ArgumentParser() ap.add_argument('--arch', required=True, nargs='+', type=int) ap.add_argument('--lr', required=False, type=float, default=.01) ap.add_argument('--epochs', required=False, type=int, default=100) ap.add_argument('--iters', required=True, type=int) ap.add_argument('--trials', required=True, type=int) ap.add_argument('--env', required=True) ap.add_argument('--t', required=True, type=int) ap.add_argument('--grads', required=True, type=int) ap.add_argument('--weights', required=True, nargs='+', type=float, default=[1.0, .1, .5]) ap.add_argument('--ufact', required=True, default=4.0, type=float) ap.add_argument('--id', required=True, default=4.0, type=int) ap.add_argument('--nu', required=True, type=float) ap.add_argument('--gamma', required=True, type=float) opt = Options() args = ap.parse_args() opt.load_args(args) args = vars(args) opt.envname = opt.env opt.env = gym.envs.make(opt.envname).env opt.sim = gym.envs.make(opt.envname).env exp_id = args['id'] opt.env.my_weights = args['weights'] opt.env.ufact = args['ufact'] opt.pi = net.Network([64, 64], .01, 300) suffix = '_' + utils.stringify(args['weights']) + '_' + str(args['ufact']) weights_path = 'meta/' + 'test' + '/' + opt.envname + '_' + str( exp_id) + '_weights' + suffix + '.txt' stats_path = 'meta/' + 'test' + '/' + opt.envname + '_' + str( exp_id) + '_stats' + suffix + '.txt' opt.pi.load_weights(weights_path, stats_path) opt.sup = Supervisor(opt.pi) opt.misc = Options() opt.misc.num_evaluations = 1 opt.misc.samples = 5 rec_results = {} lnr_results = {} plot_dir = utils.generate_plot_dir('initial', 'experts', vars(opt)) data_dir = utils.generate_data_dir('initial', 'experts', vars(opt)) if not os.path.exists(plot_dir): os.makedirs(plot_dir) if not os.path.exists(data_dir): os.makedirs(data_dir) if not os.path.exists(data_dir + '/full'): os.makedirs(data_dir + '/full') if not os.path.exists(plot_dir + '/full'): os.makedirs(plot_dir + '/full') opt.data_dir = data_dir opt.plot_dir = plot_dir trials_data = run_trial(opt)
def main(): ap = argparse.ArgumentParser() ap.add_argument('--arch', required=True, nargs='+', type=int) ap.add_argument('--lr', required=False, type=float, default=.01) ap.add_argument('--epochs', required=False, type=int, default=100) ap.add_argument('--iters', required=True, type=int) ap.add_argument('--trials', required=True, type=int) ap.add_argument('--env', required=True) ap.add_argument('--t', required=True, type=int) ap.add_argument('--grads', required=True, type=int) ap.add_argument('--weights', required=True, nargs='+', type=float, default=[1.0, .1, .5]) ap.add_argument('--ufact', required=True, default=4.0, type=float) ap.add_argument('--id', required=True, default=4.0, type=int) ap.add_argument('--nu', required=True, type=float) ap.add_argument('--gamma', required=True, type=float) opt = Options() args = ap.parse_args() opt.load_args(args) args = vars(args) opt.envname = opt.env opt.env = gym.envs.make(opt.envname).env opt.sim = gym.envs.make(opt.envname).env exp_id = args['id'] opt.env.my_weights = args['weights'] opt.env.ufact = args['ufact'] opt.pi = net.Network([64, 64], .01, opt.epochs) suffix = '_' + utils.stringify(args['weights']) + '_' + str(args['ufact']) weights_path = 'meta/' + 'test' + '/' + opt.envname + '_' + str(exp_id) + '_weights' + suffix + '.txt' stats_path = 'meta/' + 'test' + '/' + opt.envname + '_' + str(exp_id) + '_stats' + suffix + '.txt' opt.pi.load_weights(weights_path, stats_path) opt.sup = Supervisor(opt.pi) opt.misc = Options() opt.misc.num_evaluations = 1 opt.misc.samples = 1 rec_results = {} lnr_results = {} plot_dir = utils.generate_plot_dir('initial', 'experts', vars(opt)) data_dir = utils.generate_data_dir('initial', 'experts', vars(opt)) if not os.path.exists(plot_dir): os.makedirs(plot_dir) if not os.path.exists(data_dir): os.makedirs(data_dir) if not os.path.exists(data_dir + '/multiple_trials'): os.makedirs(data_dir + '/multiple_trials') if not os.path.exists(plot_dir + '/multiple_trials'): os.makedirs(plot_dir + '/multiple_trials') opt.data_dir = data_dir opt.plot_dir = plot_dir trials_data = [] rec_scores = [] rec_cutoffs = [] for t in range(opt.trials): print "\n\nTrial: " + str(t) + "\n\n" opt.t_value = t trial_data, info = run_trial(opt) trials_data.append(trial_data) rec_scores += info['rec_scores'] rec_cutoffs += info['rec_cutoffs'] print "Saving to: " + str(opt.data_dir + 'multiple_trials/trials_data.pkl') pickle.dump(trials_data, open(opt.data_dir + 'multiple_trials/trials_data.pkl', 'w')) pickle.dump(rec_scores, open(opt.data_dir + 'multiple_trials/rec_scores.pkl', 'w')) pickle.dump(rec_cutoffs, open(opt.data_dir + 'multiple_trials/rec_cutoffs.pkl', 'w'))
def main(): ap = argparse.ArgumentParser() ap.add_argument('--arch', required=True, nargs='+', type=int) ap.add_argument('--lr', required=False, type=int, default=.01) ap.add_argument('--epochs', required=False, type=int, default=100) ap.add_argument('--iters', required=True, type=int) ap.add_argument('--trials', required=True, type=int) ap.add_argument('--env', required=True) ap.add_argument('--t', required=True, type=int) ap.add_argument('--grads', required=True, type=int) opt = Options() opt.load_args(ap.parse_args()) opt.envname = opt.env opt.filename = '/Users/JonathanLee/experts/' + opt.envname + '.pkl' opt.env = gym.envs.make(opt.envname).env opt.sim = gym.envs.make(opt.envname).env opt.pi = load_policy.load_policy(opt.filename) opt.sess = tf.Session() opt.sup = NetSupervisor(opt.pi, opt.sess) opt.misc = Options() opt.misc.num_evaluations = 10 plot_dir = utils.generate_plot_dir('initial', 'experts', vars(opt)) data_dir = utils.generate_data_dir('initial', 'experts', vars(opt)) if not os.path.exists(plot_dir): os.makedirs(plot_dir) if not os.path.exists(data_dir): os.makedirs(data_dir) if not os.path.exists(plot_dir + '/scores'): os.makedirs(plot_dir + '/scores') if not os.path.exists(plot_dir + '/mags'): os.makedirs(plot_dir + '/mags') opt.plot_dir = plot_dir opt.data_dir = data_dir sup_rewards = np.zeros((opt.trials, opt.misc.num_evaluations)) lnr_rewards = np.zeros((opt.trials, opt.misc.num_evaluations)) rob_rewards = np.zeros((opt.trials, opt.misc.num_evaluations)) train_err = np.zeros((opt.trials, opt.misc.num_evaluations, opt.t)) valid_err = np.zeros((opt.trials, opt.misc.num_evaluations, opt.t)) test_err = np.zeros((opt.trials, opt.misc.num_evaluations, opt.t)) robust_err = np.zeros((opt.trials, opt.misc.num_evaluations, opt.t)) freq = np.zeros((opt.trials, opt.misc.num_evaluations)) train_bar_errs = np.zeros((opt.trials, opt.t)) valid_bar_errs = np.zeros((opt.trials, opt.t)) test_bar_errs = np.zeros((opt.trials, opt.t)) print "Running Trials:\n\n" try: for t in range(opt.trials): start_time = timer.time() results = run_trial(opt) sup_rewards[t, :] = results['sup_reward'] lnr_rewards[t, :] = results['lnr_reward'] rob_rewards[t, :] = results['rob_reward'] train_err[t, :, :] = results['train_err'] valid_err[t, :, :] = results['valid_err'] test_err[t, :, :] = results['test_err'] robust_err[t, :, :] = results['robust_err'] freq[t, :] = results['correction_freq'] train_bar_errs[t], valid_bar_errs[t], test_bar_errs[t] = results[ 'bar_errs'] sup_rewards_save, lnr_rewards_save, rob_rewards_save = sup_rewards[: t + 1, :], lnr_rewards[: t + 1, :], rob_rewards[: t + 1, :] train_err_save, valid_err_save, test_err_save, robust_err_save = train_err[: t + 1, :, :], valid_err[: t + 1, :, :], test_err[: t + 1, :, :], robust_err[: t + 1, :, :] freq_save = freq[:t + 1, :] pd.DataFrame(sup_rewards_save).to_csv(opt.data_dir + 'sup_rewards.csv', index=False) pd.DataFrame(lnr_rewards_save).to_csv(opt.data_dir + 'lnr_rewards.csv', index=False) pd.DataFrame(rob_rewards_save).to_csv(opt.data_dir + 'rob_rewards.csv', index=False) for tau in range(opt.t): pd.DataFrame(train_err_save[:, :, tau]).to_csv( opt.data_dir + 'train_err_t' + str(tau) + '.csv', index=False) pd.DataFrame(valid_err_save[:, :, tau]).to_csv( opt.data_dir + 'valid_err_t' + str(tau) + '.csv', index=False) pd.DataFrame(test_err_save[:, :, tau]).to_csv( opt.data_dir + 'test_err_t' + str(tau) + '.csv', index=False) pd.DataFrame(robust_err_save[:, :, tau]).to_csv( opt.data_dir + 'robust_err_t' + str(tau) + '.csv', index=False) pd.DataFrame(freq_save).to_csv(opt.data_dir + 'freq.csv', index=False) train_err_avg = np.mean(train_err_save, axis=2) valid_err_avg = np.mean(valid_err_save, axis=2) test_err_avg = np.mean(test_err_save, axis=2) robust_err_avg = np.mean(robust_err_save, axis=2) utils.plot([sup_rewards_save, lnr_rewards_save, rob_rewards_save], ['Supervisor', 'Learner', 'Robust Learner'], opt, "Reward", colors=['red', 'blue', 'green']) utils.plot( [train_err_avg, valid_err_avg, test_err_avg, robust_err_avg], ['Training', 'Validation', 'Learner', 'Robust Learner'], opt, "Error", colors=['red', 'orange', 'blue', 'green']) utils.plot([freq_save], ['Frequency'], opt, 'Correction Frequency', colors=['green']) bar_errs = [ np.mean(train_bar_errs, axis=0), np.mean(valid_bar_errs, axis=0), np.mean(test_bar_errs, axis=0) ] labels = ['train', 'valid', 'test'] width = .2 index = np.arange(opt.t) for i, (err, label) in enumerate(zip(bar_errs, labels)): plt.bar(index + i * width, err, width, label=label) plt.legend() plt.ylim(0, .75) plt.savefig('/Users/JonathanLee/Desktop/bar_new_avg.png') utils.clear() end_time = timer.time() print "Trial time: " + str(end_time - start_time) except KeyboardInterrupt: pass
haptic_transform=haptic_transform, vibro_transform=vibro_transform, loader=npy_loader, device=opt.device) train_dl = DataLoader(dataset=train_ds, batch_size=opt.batch_size, shuffle=True, drop_last=False) valid_dl = DataLoader(dataset=valid_ds, batch_size=opt.batch_size, shuffle=False, drop_last=False) return train_dl, valid_dl if __name__ == '__main__': from options import Options opt = Options().parse() opt.data_dir = '../' + opt.data_dir tr, va = build_dataloader_CY101(opt) import cv2 for a, b, c, d, e in tr: imgs = c[0].unbind(0) imgs = list( map( lambda x: (x.permute([1, 2, 0]).cpu().numpy() * 255).squeeze(). astype(np.uint8), imgs)) for img in imgs: cv2.imwrite('l.png', img[20])
image_transform=valid_transform, loader=npy_loader, device=opt.device) train_dl = DataLoader(dataset=train_ds, batch_size=opt.batch_size, shuffle=True, drop_last=False) valid_dl = DataLoader(dataset=valid_ds, batch_size=opt.batch_size, shuffle=False, drop_last=False) return train_dl, valid_dl if __name__ == '__main__': from options import Options opt = Options().parse() opt.data_dir = opt.data_dir # opt.data_dir ='/Users/ramtin/PycharmProjects/data/CY101NPY' tr, va = build_dataloader_CY101(opt) import cv2 for a, b, c, d, e in tr: imgs = c[0].unbind(0) imgs = list( map( lambda x: (x.permute([1, 2, 0]).cpu().numpy() * 255).squeeze(). astype(np.uint8), imgs)) for img in imgs: cv2.imshow('l', img) cv2.waitKey(0)
def main(): ap = argparse.ArgumentParser() ap.add_argument('--arch', required=True, nargs='+', type=int) ap.add_argument('--lr', required=False, type=int, default=.01) ap.add_argument('--epochs', required=False, type=int, default=100) ap.add_argument('--iters', required=True, type=int) ap.add_argument('--trials', required=True, type=int) ap.add_argument('--env', required=True) ap.add_argument('--t', required=True, type=int) opt = Options() opt.load_args(ap.parse_args()) opt.envname = opt.env opt.filename = '/Users/JonathanLee/experts/' + opt.envname + '.pkl' opt.env = gym.envs.make(opt.envname).env opt.sim = gym.envs.make(opt.envname).env opt.pi = load_policy.load_policy(opt.filename) opt.sess = tf.Session() opt.sup = NetSupervisor(opt.pi, opt.sess) plot_dir = utils.generate_plot_dir('initial', 'experts', vars(opt)) data_dir = utils.generate_data_dir('initial', 'experts', vars(opt)) if not os.path.exists(plot_dir): os.makedirs(plot_dir) if not os.path.exists(data_dir): os.makedirs(data_dir) opt.plot_dir = plot_dir opt.data_dir = data_dir sup_rewards = np.zeros((opt.trials, opt.iters)) lnr_rewards = np.zeros((opt.trials, opt.iters)) rob_rewards = np.zeros((opt.trials, opt.iters)) train_err = np.zeros((opt.trials, opt.iters)) valid_err = np.zeros((opt.trials, opt.iters)) test_err = np.zeros((opt.trials, opt.iters)) robust_err = np.zeros((opt.trials, opt.iters)) freq = np.zeros((opt.trials, opt.iters)) for t in range(opt.trials): results = run_trial(opt) sup_rewards[t, :] = results['sup_reward'] lnr_rewards[t, :] = results['lnr_reward'] rob_rewards[t, :] = results['rob_reward'] train_err[t, :] = results['train_err'] valid_err[t, :] = results['valid_err'] test_err[t, :] = results['test_err'] robust_err[t, :] = results['robust_err'] freq[t, :] = results['correction_freq'] pd.DataFrame(sup_rewards).to_csv(opt.data_dir + 'sup_rewards.csv', index=False) pd.DataFrame(lnr_rewards).to_csv(opt.data_dir + 'lnr_rewards.csv', index=False) pd.DataFrame(rob_rewards).to_csv(opt.data_dir + 'rob_rewards.csv', index=False) pd.DataFrame(train_err).to_csv(opt.data_dir + 'train_err.csv', index=False) pd.DataFrame(valid_err).to_csv(opt.data_dir + 'valid_err.csv', index=False) pd.DataFrame(test_err).to_csv(opt.data_dir + 'test_err.csv', index=False) pd.DataFrame(robust_err).to_csv(opt.data_dir + 'robust_err.csv', index=False) pd.DataFrame(freq).to_csv(opt.data_dir + 'freq.csv', index=False) utils.plot([sup_rewards, lnr_rewards, rob_rewards], ['Supervisor', 'Learner', 'Robust Learner'], opt, "Reward", colors=['red', 'blue', 'green']) utils.plot([train_err, valid_err, test_err, robust_err], ['Training', 'Validation', 'Learner', 'Robust Learner'], opt, "Error", colors=['red', 'orange', 'blue', 'green']) utils.plot([freq], ['Frequency'], opt, 'Correction Frequency', colors=['green'])
from options import Options from model import Model if __name__ == '__main__': opt = Options().parse() opt.data_dir = '../CY101NPY' opt.pretrained_model = '../net_epoch_0.pth' m = Model(opt) m.load_weight() m.evaluate(0)