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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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()
Exemplo n.º 5
0
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