コード例 #1
0
 def test_no_token_get_data(self):
     with pytest.raises(Exception):
         dh.get_data({}, "short_term")
     assert len(dh.get_top_track_names()) == 0
     with pytest.raises(Exception):
         dh.get_data({}, "medium_term")
     assert len(dh.get_top_artist_names()) == 0
     with pytest.raises(Exception):
         dh.get_data({}, "long_term")
     assert len(dh.get_top_track_names()) == 0
コード例 #2
0
def init(config, run):
    # general init
    args = SimpleNamespace(**config)
    args = assertions.validate_args(args)
    mlh.seed_all(args.seed)
    args._run = run
    args.wandb = wandb

    # init scheduler
    args.partition_scheduler = schedules.get_partition_scheduler(args)
    args.partition = util.get_partition(args)

    # init data
    train_data_loader, test_data_loader = get_data(args)
    args.train_data_loader = train_data_loader
    args.test_data_loader = test_data_loader

    # init model
    model = get_model(train_data_loader, args)

    # init optimizer
    model.init_optimizer()

    return model, args
コード例 #3
0
def train(args):
    # read data
    train_data_loader, test_data_loader = get_data(args)

    # attach data to args
    args.train_data_loader = train_data_loader
    args.test_data_loader = test_data_loader

    # Make models
    model = get_model(train_data_loader, args)

    # Make optimizer
    if args.loss in DUAL_OBJECTIVES:
        optimizer_phi = torch.optim.Adam(
            (params for name, params in model.named_parameters()
             if args.phi_tag in name),
            lr=args.lr)
        optimizer_theta = torch.optim.Adam(
            (params for name, params in model.named_parameters()
             if args.theta_tag in name),
            lr=args.lr)

    else:
        optimizer = torch.optim.Adam(model.parameters(), lr=args.lr)

    #for epoch in range(args.epochs):
    for epoch in tqdm(range(args.epochs)):
        if mlh.is_schedule_update_time(epoch, args):
            args.partition = args.partition_scheduler(model, args)
            if len(args.Y_ori) % args.increment_update_frequency == 0 and len(
                    args.Y_ori) > 1:
                args.schedule_update_frequency = args.schedule_update_frequency + 1
                print("args.schedule_update_frequency=",
                      args.schedule_update_frequency)

        if args.loss in DUAL_OBJECTIVES:
            train_logpx, train_elbo, train_tvo_log_evidence = model.train_epoch_dual_objectives(
                train_data_loader, optimizer_phi, optimizer_theta, epoch=epoch)
        else:
            # addl recording within model.base
            train_logpx, train_elbo, train_tvo_log_evidence = model.train_epoch_single_objective(
                train_data_loader, optimizer, epoch=epoch)

        log_scalar(train_elbo=train_elbo,
                   train_logpx=train_logpx,
                   train_tvo_log_evidence=train_tvo_log_evidence,
                   step=epoch)

        # store the information
        args.betas_all = np.vstack((args.betas_all,
                                    np.reshape(format_input(args.partition),
                                               (1, args.K + 1))))
        args.logtvopx_all = np.append(args.logtvopx_all,
                                      train_tvo_log_evidence)

        if mlh.is_gradient_time(epoch, args):
            # Save grads
            grad_variance = util.calculate_grad_variance(model, args)
            log_scalar(grad_variance=grad_variance, step=epoch)

        if mlh.is_test_time(epoch, args):
            test_logpx, test_kl = model.evaluate_model_and_inference_network(
                test_data_loader, epoch=epoch)
            log_scalar(test_logpx=test_logpx, test_kl=test_kl, step=epoch)

        if mlh.is_checkpoint_time(epoch, args):
            opt = [optimizer_phi, optimizer_theta
                   ] if args.loss in DUAL_OBJECTIVES else [optimizer]
            save_checkpoint(model, epoch, train_elbo, train_logpx, opt, args)

        # ------ end of training loop ---------
    opt = [optimizer_phi, optimizer_theta
           ] if args.loss in DUAL_OBJECTIVES else [optimizer]
    save_checkpoint(model, args.epochs, train_elbo, train_logpx, opt, args)

    if args.train_only:
        test_logpx, test_kl = 0, 0

    results = {
        "test_logpx": test_logpx,
        "test_kl": test_kl,
        "train_logpx": train_logpx,
        "train_elbo": train_elbo,
        "train_tvo_px": train_tvo_log_evidence,
        "average_y":
        args.average_y,  # average tvo_logpx within this bandit iteration
        "X": args.X_ori,  # this is betas
        # this is utility score y=f(betas)= ave_y[-1] - ave_y[-2]
        "Y": args.Y_ori
    }

    return results, model
コード例 #4
0
def test_write_data(init, test_input):
    init.add_user(test_input)
    wrote_list = write_data_out(init, URL)

    assert wrote_list.gib_list() == get_data(URL).gib_list()
コード例 #5
0
def test_get_data_fail(init):
    with pytest.raises(Exception):
        get_data("emptydb.json")
コード例 #6
0
def test_get_data(init):
    assert init.gib_list() == get_data(URL).gib_list()
コード例 #7
0
ファイル: main.py プロジェクト: vmasrani/tvo_all_in
def train(args):
    # read data
    train_data_loader, test_data_loader = get_data(args)

    # attach data to args
    args.train_data_loader = train_data_loader
    args.test_data_loader = test_data_loader

    # Make models
    model = get_model(train_data_loader, args)

    args.train_data_loader = train_data_loader
    args.test_data_loader = test_data_loader
    # Make optimizer
    if args.loss in DUAL_LIST:
        optimizer_phi = torch.optim.Adam(
            (params for name, params in model.named_parameters()
             if 'encoder' in name),
            lr=args.lr)
        optimizer_theta = torch.optim.Adam(
            (params for name, params in model.named_parameters()
             if 'decoder' in name),
            lr=args.lr)
    else:
        optimizer = torch.optim.Adam(model.parameters(), lr=args.lr)

    for epoch in range(args.epochs):

        _record = mlh.is_record_time(epoch, args)

        if args.loss in DUAL_LIST:
            train_logpx, train_elbo = model.train_epoch_dual_objectives(
                train_data_loader,
                optimizer_phi,
                optimizer_theta,
                record=_record)
        else:
            train_logpx, train_elbo = model.train_epoch_single_objective(
                train_data_loader, optimizer, record=_record)

        log_scalar(train_elbo=train_elbo, train_logpx=train_logpx, step=epoch)

        if mlh.is_test_time(epoch, args):
            args.test_time = True
            test_logpx, test_kl = model.evaluate_model_and_inference_network(
                test_data_loader)
            log_scalar(test_logpx=test_logpx, test_kl=test_kl, step=epoch)
            args.test_time = False

        if mlh.is_checkpoint_time(epoch, args):
            opt = [optimizer_phi, optimizer_theta
                   ] if args.loss in DUAL_LIST else [optimizer]
            save_checkpoint(model, epoch, train_elbo, train_logpx, opt, args)

        if mlh.is_schedule_update_time(epoch, args):
            args.partition = args.partition_scheduler(model, args)

        # ------ end of training loop ---------

    if args.train_only:
        test_logpx, test_kl = 0, 0

    results = {
        "test_logpx": test_logpx,
        "test_kl": test_kl,
        "train_logpx": train_logpx,
        "train_elbo": train_elbo
    }

    return results, model
コード例 #8
0
ファイル: app.py プロジェクト: otl644/test-for-fan
from typing import Dict
from fastapi import FastAPI
from src.data_handler import get_data, write_data_out

users_list = get_data()  # initializing list from db
app = FastAPI()


@app.get("/users")
def get_users(usr_list: Dict, db=users_list):
    usrs = usr_list["users"]
    if len(usrs) == 1:
        return db.gib_list(usrs[0])
    found = []
    for i in range(len(usrs)):
        found.append(db.gib_list(usrs[i]))
    return found


@app.post("/user")
def post_user(user: Dict, db=users_list):
    added_user = db.add_user(user["user"])
    write_data_out(db)
    return db.gib_list(added_user.name)


@app.post("/iou")
def post_iou(info: Dict, db=users_list):
    lender = info["lender"]
    borrower = info["borrower"]
    amount = info["amount"]