def main_trainer(hparams): print_params(hparams) full_exp = Experiment(name=hparams.tt_name + '_overall', debug=hparams.debug, autosave=False, description=hparams.tt_description, save_dir=hparams.tt_save_path) full_exp.add_argparse_meta(hparams) # fit model val_scores, train_scores = [], [] best_acc = 0 best_loss = 0 best_trial_nb = 0 for trial_nb in range(hparams.nb_trials): exp = Experiment(name=hparams.tt_name, debug=hparams.debug, autosave=False, description=hparams.tt_description, save_dir=hparams.tt_save_path) exp.add_argparse_meta(hparams) data = SequentialReadingsData(window_size=hparams.time_steps, data_path=hparams.data_path) val_loss, val_acc, history = fit_feedforward(hparams, exp, trial_nb, data) log_history(history.history, exp) exp.add_metric_row({ 'final_val_acc': val_acc, 'final_train_acc': val_loss }) exp.save() full_exp.add_metric_row({ 'val_acc': val_acc, 'val_loss': val_loss, 'trial_nb': trial_nb }) # save model when we have a better one if val_acc > best_acc: best_acc = val_acc best_loss = val_loss best_trial_nb = trial_nb val_scores.append(val_acc) mean_val_acc = np.mean(val_scores) full_exp.add_metric_row({ 'final_val_acc': mean_val_acc, 'best_val_loss': best_loss, 'best_val_acc': best_acc, 'best_trial_nb': best_trial_nb }) full_exp.save()
def train(hparams): # init exp and track all the parameters from the HyperOptArgumentParser exp = Experiment(name='dense_model', save_dir='/some/path', autosave=False) exp.add_argparse_meta(hparams) # define tensorflow graph x = tf.placeholder(dtype=tf.int32, name='x') y = tf.placeholder(dtype=tf.int32, name='y') out = x * y sess = tf.Session() # Run the tf op for train_step in range(0, 100): output = sess.run(out, feed_dict={x: hparams.x_val, y: hparams.y_val}) exp.add_metric_row({'fake_err': output}) # save exp when we're done exp.save()
def main_trainer(hparams): print_params(hparams) exp = Experiment(name=hparams.tt_name, debug=hparams.debug, autosave=False, description=hparams.tt_description, save_dir=hparams.tt_save_path) exp.add_argparse_meta(hparams) # fit model val_scores = [] best_score = 0 for trial_nb in range(hparams.nb_trials): data = dataset_loader.IndividualSequencesData( hparams.data_path, y_labels=hparams.y_labels.split(',')) X, Y, lengths = flatten_data(data.train_x_y) # fit model = hmm.GaussianHMM(n_components=hparams.nb_components, n_iter=hparams.nb_hmm_iters) model.fit(X, lengths) val_X, val_Y, lengths = flatten_data(data.val_x_y) Y_hat = model.predict(val_X, lengths) val_score = np.equal(Y_hat, val_Y).sum() / float(len(Y_hat)) # save model if val_score > best_score: best_score = val_score save_model(model, hparams, exp, trial_nb) val_scores.append(val_score) exp.add_metric_row({'val_acc': val_score, 'trail_nb': trial_nb}) mean_val_acc = np.mean(val_scores) exp.add_metric_row({'final_val_acc': mean_val_acc}) exp.save()
def main_trainer(hparams): print_params(hparams) exp = Experiment(name=hparams.tt_name, debug=hparams.debug, autosave=False, description=hparams.tt_description, save_dir=hparams.tt_save_path) exp.add_argparse_meta(hparams) # init data loader # fit model val_scores, train_scores = [], [] best_score = 0 for trial_nb in range(hparams.nb_trials): data = SequentialReadingsData(window_size=hparams.time_steps, data_path=hparams.data_path, flatten_x=True) clf = RandomForestClassifier(n_estimators=hparams.nb_estimators) clf.fit(data.train_x, data.train_y) train_score = clf.score(data.train_x, data.train_y) val_score = clf.score(data.val_x, data.val_y) # save model when we have a better one if val_score > best_score: best_score = val_score save_model(clf, hparams, exp, trial_nb) train_scores.append(train_score) val_scores.append(val_score) exp.add_metric_row({'val_acc': val_score, 'train_acc': train_score, 'trail_nb': trial_nb}) mean_val_acc = np.mean(val_scores) mean_train_acc = np.mean(train_scores) exp.add_metric_row({'final_val_acc': mean_val_acc, 'final_train_acc': mean_train_acc}) exp.save()
def get_critic_train_data(succ_states, rewards, dones): # r + Q(s, pi(s')) Q_succ = critic_target(succ_states, actor_target(succ_states)).squeeze() td_estimate = rewards + ((1 - dones) * hparams.discount * Q_succ) return td_estimate.detach() actor_opt = Adam(actor.parameters()) critic_opt = Adam(critic.parameters()) buffer = ReplayBuffer(hparams.buffer_size) s, rews = np_to_var(env.reset()), [] for hparam in hparams.trials(5): exp.add_argparse_meta(hparam) for timestep in range(hparam.num_steps): noise = Normal( mean=Variable(torch.zeros(A)), std=hparam.noise_factor * Variable(torch.ones(A)), ) if timestep % 1000 == 0: hparam.noise_factor /= 2 a = actor(s) + noise.sample() succ, r, done, _ = env.step(a.data.numpy()) succ = np_to_var(succ) buffer.append(Step(s, a, r, succ, done)) rews.append(r) s = np_to_var(env.reset()) if done else succ