コード例 #1
0
def train(args):
    traj, n_traj, translator = traj_prepare(
        TRAJ_PATH,
        CODE_PATH,
        NUM_SAMPLES,
        use_cols=args.begin_index +
        np.arange(args.num_per_day) * args.time_interval,
        add_idx=ADD_IDX)
    cond, n_categ_cond = cond_prepare(COND_PATH, NUM_SAMPLES)
    cond = cond[:, 1]  # only use job here
    n_categ_cond = n_categ_cond[1]
    cond = trans_one_hot(cond.flatten(), n_categ_cond).astype(np.float32)

    NUM_CLASS = n_traj

    # add SOS
    num_training_sample = int(NUM_SAMPLES * 0.8)
    ix_sos = translator.trans_code2ix(["0/SOS"])[0]
    traj = np.concatenate([np.ones((traj.shape[0], 1), dtype=int), traj],
                          axis=1)

    training_data, validation_data = traj[:num_training_sample, :-1], traj[
        num_training_sample:, :-1]
    training_label, validation_label = traj[:num_training_sample,
                                            1:], traj[num_training_sample:, 1:]
    training_cond, validation_cond = cond[:num_training_sample], cond[
        num_training_sample:]

    training_loader = torch.utils.data.DataLoader(TrajDatasetGeneral(
        [training_data, training_label, training_cond]),
                                                  batch_size=args.batch_size,
                                                  shuffle=True,
                                                  num_workers=4,
                                                  drop_last=False)
    validation_loader = torch.utils.data.DataLoader(TrajDatasetGeneral(
        [validation_data, validation_label, validation_cond]),
                                                    batch_size=2000,
                                                    shuffle=False,
                                                    num_workers=4,
                                                    drop_last=False)

    seq_vae = CondVAE(num_class=NUM_CLASS,
                      embedding_size=args.embed_size,
                      embedding_drop_out=args.emb_dropout,
                      hid_size=args.hid_size,
                      hid_layers=args.hid_layer,
                      latent_z_size=args.latent_z_size,
                      cond_size=n_categ_cond,
                      word_dropout_rate=args.word_dropout,
                      gru_drop_out=args.gru_dropout,
                      anneal_k=args.anneal_k,
                      anneal_x0=args.anneal_x0,
                      anneal_function=args.anneal_func,
                      data_keys=DATA_KEYS,
                      learning_rate=args.lr,
                      sos_idx=ix_sos,
                      unk_idx=None)

    test_batch = wrap_data(next(iter(training_loader)), DATA_KEYS)
    model_summary = torchsummaryX.summary(seq_vae.model, test_batch['data'],
                                          test_batch['cond'])

    seq_vae.model.to(DEVICE)

    seq_vae.fit(training_loader=training_loader,
                validation_loader=validation_loader,
                epochs=args.epochs,
                device=DEVICE)
    return seq_vae, translator
コード例 #2
0
                    default=5e-3,
                    metavar='LR',
                    help='learning rate')

args, unknown = parser.parse_known_args()
torch.manual_seed(3)
np.random.seed(3)

source_folder = "/home/ubuntu/pflow_data/filtered"
traj_path = f"{source_folder}/traj.csv"
code_path = f"{source_folder}/code.csv"
cond_path = f"{source_folder}/cond.csv"

num_samples = 180000
traj, n_traj, translator = traj_prepare(
    traj_path, code_path, num_samples,
    use_cols=360 + np.arange(18 * 10) * 6)  #, add_idx=["0/SOS"])
#TODO check here
cond, n_categ = cond_prepare(cond_path, num_samples)

NUM_CLASS = n_traj

num_training_sample = int(num_samples * 0.8)
training_data, validation_data = traj[:num_training_sample, :-1], traj[
    num_training_sample:, :-1]
training_label, validation_label = traj[:num_training_sample,
                                        1:], traj[num_training_sample:, 1:]
training_cond, validation_cond = cond[:num_training_sample], cond[
    num_training_sample:]

training_loader = torch.utils.data.DataLoader(TrajDatasetCond(
コード例 #3
0
                    default=5e-3,
                    metavar='LR',
                    help='learning rate')

args, unknown = parser.parse_known_args()
torch.manual_seed(3)
np.random.seed(3)

source_folder = "/home/ubuntu/pflow_data/filtered"
traj_path = f"{source_folder}/traj.csv"
code_path = f"{source_folder}/code.csv"

num_samples = 50000
traj, n_traj, translator = traj_prepare(
    traj_path,
    code_path,
    num_samples,
    use_cols=args.begin_index +
    np.arange(args.num_per_day) * args.time_interval)
#add_idx=["0/SOS"])

NUM_CLASS = n_traj
DATA_KEYS = ["data", "label"]

num_training_sample = int(num_samples * 0.8)
training_data, validation_data = traj[:num_training_sample, :-1], traj[
    num_training_sample:, :-1]
training_label, validation_label = traj[:num_training_sample,
                                        1:], traj[num_training_sample:, 1:]

training_loader = torch.utils.data.DataLoader(TrajDatasetGeneral(
    [training_data, training_label]),