def runPytorchModel(args): # Initialize network if args['model'] == "traphic": net = traphicNet(args) else: net = highwayNet(args) # net.load_state_dict(torch.load('trained_models/m_false/cslstm_b_pretrain2_NGSIM.tar'), strict=False) if args['cuda']: print("Using cuda") net = net.cuda() # net = net.to("cuda") ## Initialize optimizer optim = torch.optim.Adam(net.parameters(), lr=args['learning_rate']) crossEnt = torch.nn.BCELoss() if verbose: print("*" * 3, "Using model: ", net) print("*" * 3, "Optim: ", optim) print("*" * 3, "Creating dataset and dataloaders...") ## Initialize data loaders trSet = ngsimDataset('model/Prediction/data/TRAF/TRAFTrainSet.npy') valSet = ngsimDataset('model/Prediction/data/TRAF/TRAFValSet.npy') # trSet = ngsimDataset('./Prediction/data/TrainSetTRAF.mat') # valSet = ngsimDataset('./Prediction/data/ValSetTRAF.mat') trDataloader = DataLoader(trSet, batch_size=args['batch_size'], shuffle=True, num_workers=8, collate_fn=trSet.collate_fn) valDataloader = DataLoader(valSet, batch_size=args['batch_size'], shuffle=True, num_workers=8, collate_fn=valSet.collate_fn) if verbose: print("starting training...") if args['model'] == "traphic": if verbose: print("Training TRAPHIC") traphic = TraphicEngine(net, optim, trDataloader, valDataloader, args) traphic.start() else: if verbose: print("Training conv social pooling") social = SocialEngine(net, optim, trDataloader, valDataloader, args) social.start()
def evalPytorchModel(args): # Initialize network args['eval'] = True if args['model'] == "traphic": net = traphicNet(args) else: net = highwayNet(args) # net.load_state_dict(torch.load('trained_models/m_false/cslstm_b_pretrain2_NGSIM.tar'), strict=False) if args['use_cuda']: print("Using cuda") net = net.cuda() # net = net.to("cuda") ## Initialize optimizer optim = torch.optim.Adam(net.parameters(), lr=args['learning_rate']) crossEnt = torch.nn.BCELoss() if verbose: print("*" * 3, "Using model: ", net) print("*" * 3, "Optim: ", optim) print("*" * 3, "Creating dataset and dataloaders...") ## Initialize data loaders testSet = ngsimDataset('model/Prediction/data/TRAF/TRAFTestSet.npy') testDataloader = DataLoader(testSet, batch_size=args['batch_size'], shuffle=True, num_workers=8, collate_fn=testSet.collate_fn) if verbose: print("evaluating...") net.load_state_dict( torch.load("model/Prediction/trained_models/{}_{}.tar".format( args['model'], args['name']))) if args['model'] == "traphic": if verbose: print("Evaluating TRAPHIC") traphic = TraphicEngine(net, optim, None, testDataloader, args) traphic.start() else: if verbose: print("Evaluating SOCIAL") social = SocialEngine(net, optim, None, testDataloader, args) social.start()
start_time = datetime.datetime.now() # Initialize network net = highwayNet(args) if args['use_cuda']: net = net.cuda() ## Initialize optimizer trainEpochs = 10 optimizer = torch.optim.Adam(net.parameters()) #lr = ... batch_size = 128 crossEnt = torch.nn.BCELoss() # binary cross entropy ## Initialize data loaders trSet = ngsimDataset('../../data/trajectory/TrainSet.mat') valSet = ngsimDataset('../../data/trajectory/ValSet.mat') trDataloader = DataLoader(trSet, batch_size=batch_size, shuffle=True, num_workers=8, collate_fn=trSet.collate_fn) valDataloader = DataLoader(valSet, batch_size=batch_size, shuffle=True, num_workers=8, collate_fn=valSet.collate_fn) ## Variables holding train and validation loss values: train_loss = [] val_loss = []
batch_size = 1024 # 1024 on AWS with V100, 768 on GTX 1080 TI else: batch_size = 128 ## Initialize data loaders logging.info("Loading the datasets...") newFeats = 0 behavFeats = 0 if 'X' in cmd_args.experiment: # new features experiments newFeats = 3 behavFeats = 0 #trSet = ngsimDataset('data/TrainSetX.mat', grid_size=(19,3) ) #valSet = ngsimDataset('data/ValSetX.mat', grid_size=(19,3) ) trSet = ngsimDataset('data/TrainSetCVA.mat', newFeats=newFeats) valSet = ngsimDataset('data/ValSetCVA.mat', newFeats=newFeats) else: trSet = ngsimDataset('data/TrainSet.mat') valSet = ngsimDataset('data/ValSet.mat') trDataloader = DataLoader(trSet, batch_size=batch_size, shuffle=True, num_workers=8, collate_fn=trSet.collate_fn) valDataloader = DataLoader(valSet, batch_size=batch_size, shuffle=True, num_workers=8, collate_fn=valSet.collate_fn)
args['device'] = torch.device('cuda:' + str(args['gpu'])) # Evaluation metric: # metric = 'nll' #or rmse metric = 'rmse' # Initialize network net = SocialSTGCNModel(args) net.load_state_dict(torch.load('../saved_models/student_stgcn.tar')) state = torch.load('../saved_models/teacher_gmm_set.tar') gmm_dict = state['gmm_dict'] tsSet = None if args['dset_name'] == 'ngsim': tsSet = ngsimDataset('../../data/TestSetNGSIM.mat', gmm_dict, args['Mq'], args['z_size']) elif args['dset_name'] == 'gta': tsSet = gtaDataset('../../data/TestSetGTA', args['dset_tag'], gmm_dict, args['Mq'], args['z_size']) assert tsSet != None tsDataloader = DataLoader(tsSet, batch_size=64, shuffle=True, num_workers=8, collate_fn=tsSet.collate_fn) lossVals = torch.zeros(25).cuda() counts = torch.zeros(25).cuda() for i, data in enumerate(tsDataloader):
# Initialize network net_vae = GCNVAE(args) net_gmm = GMM(args) ## Initialize optimizer pretrainEpochs = 0 trainEpochs = 1 optim_vae = torch.optim.Adam(net_vae.parameters(), lr=args['lr_vae']) optim_gmm = torch.optim.Adam(net_gmm.parameters(), lr=args['lr_gmm']) batch_size = 32 ## Initialize data loaders trSet = None if args['dset_name'] == 'ngsim': trSet = ngsimDataset('../../data/TeacherSetNGSIM.mat') elif args['dset_name'] == 'gta': trSet = gtaDataset('../../data/TeacherSetGTA', args['dset_tag']) assert trSet != None trDataloader = DataLoader(trSet, batch_size=batch_size, shuffle=True, num_workers=2, collate_fn=trSet.collate_fn) ## Variables holding train and validation loss values: vae_losses = [] gmm_losses = [] for epoch_num in range(pretrainEpochs + trainEpochs):
# params.requires_grad = False if args['use_cuda']: net = net.cuda() ## Initialize optimizer # pretrainEpochs = 80 # trainEpochs = 200 # batch_size = 128 optimizer = torch.optim.Adam(net.parameters(),lr=lr) crossEnt = torch.nn.BCELoss() ## Initialize data loaders trSet = ngsimDataset('data/TrainSet.mat') valSet = ngsimDataset('data/ValSet.mat') trDataloader = DataLoader(trSet,batch_size=batch_size,shuffle=True,num_workers=8,collate_fn=trSet.collate_fn) valDataloader = DataLoader(valSet,batch_size=batch_size,shuffle=True,num_workers=8,collate_fn=valSet.collate_fn) ## Variables holding train and validation loss values: train_loss = [] val_loss = [] prev_val_loss = math.inf for epoch_num in range(pretrainEpochs+trainEpochs): if epoch_num == 0: print('Pre-training with MSE loss') elif epoch_num == pretrainEpochs: print('Training with NLL loss')
args['conv_3x1_depth'] = 16 args['dyn_embedding_size'] = 32 args['input_embedding_size'] = 32 args['num_lat_classes'] = 3 args['num_lon_classes'] = 2 args['use_maneuvers'] = True # visualize multi-model predictions args['train_flag'] = False # Initialize network net = highwayNet(args) net.load_state_dict(torch.load('trained_models/cslstm_m.tar')) #net.load_state_dict(torch.load('trained_models/cslstm.tar')) if args['use_cuda']: net = net.cuda() data_set = ngsimDataset('data/TestSet.mat') skip = 10 lossVals = torch.zeros(25).cuda() counts = torch.zeros(25).cuda() delta = 2.0 x_min = -120 x_max = 120 range_y = 20 scale = 0.4 v_w = 5 v_l = 15
else: metricFCT = maskedBIGERRTest # Initialize network batch_size = 1024 batch_size = 16 #batch_size=6 logging.info("Loading the datasets...") newFeats = 0 behavFeats = 0 if 'X' in cmd_args.experiment: newFeats = 3 behavFeats = 0 #tsSet = ngsimDataset('data/TestSetV.mat', newFeats=newFeats) tsSet = ngsimDataset('data/TestSetCVA.mat', newFeats=newFeats) else: tsSet = ngsimDataset('data/TestSet.mat') tsDataloader = DataLoader(tsSet, batch_size=batch_size, shuffle=False, num_workers=0, collate_fn=tsSet.collate_fn) net = highwayNet(params, newFeats=newFeats, behavFeats=behavFeats) net_path = os.path.join(args['model_dir'], 'best.pth.tar') assert os.path.isfile(net_path), "No net file found at {}".format(net_path) #net.load_state_dict(torch.load('trained_models/cslstm_m.tar')) utils.load_checkpoint(net_path, net)
args['model_path'] = 'trained_models/m_false/cslstm_b_pretrain2_NGSIM.tar' args['dataset_path'] = 'data/TestSetTRAF.mat' args['ours'] = True # Evaluation metric: metric = 'rmse' #nll or rmse # Initialize network net = highwayNet(args) batch_size = 128 net.load_state_dict(torch.load(args['model_path']),strict=False) if args['use_cuda']: net = net.cuda() tsSet = ngsimDataset(args['dataset_path']) tsDataloader = DataLoader(tsSet,batch_size=batch_size,shuffle=True,num_workers=8,collate_fn=tsSet.collate_fn) lossVals = torch.zeros(args['out_length']).cuda() counts = torch.zeros(args['out_length']).cuda() for i, data in enumerate(tsDataloader): st_time = time.time() hist, upp_nbrs, nbrs, upp_mask, mask, lat_enc, lon_enc, fut, op_mask = data # Initialize Variables if args['use_cuda']: hist = hist.cuda() nbrs = nbrs.cuda() upp_nbrs = upp_nbrs.cuda()
args['input_embedding_size'] = 32 args['train_flag'] = False # Evaluation metric: metric = 'rmse' # Initialize network net = highwayNet(args) net.load_state_dict(torch.load('trained_models/sta_lstm_10272020.tar')) if args['use_cuda']: net = net.cuda() tsSet = ngsimDataset('../../data/trajectory/TestSet.mat') tsDataloader = DataLoader(tsSet, batch_size=128, shuffle=True, num_workers=8, collate_fn=tsSet.collate_fn) # lossVals = torch.zeros(5).cuda() counts = torch.zeros(5).cuda() lossVal = 0 # revised by Lei count = 0 vehid = [] pred_x = [] pred_y = [] T = []
assert args['h_dim2'] == args['z_dim'] args['device'] = torch.device('cpu') if args['use_cuda']: args['device'] = torch.device('cuda:' + str(args['gpu'])) # Initialize network net_vae = GCNVAE(args) net_vae.load_state_dict(torch.load('../saved_models/teacher_vae.tar')) net_gmm = GMM(args) net_gmm.load_state_dict(torch.load('../saved_models/teacher_gmm.tar')) ## Initialize data loaders batch_size = 32 trSet = ngsimDataset('../../data/TrainSet.mat') trDataloader = DataLoader(trSet, batch_size=batch_size, shuffle=False, num_workers=2, collate_fn=trSet.collate_fn) ## Infer mu_q, sigma_q and dump the dict gmm_count = 0 gmm_dict = {} avg_time = 0 net_vae.training = False for i, data in enumerate(trDataloader): st_time = time.time() data_list, graph_list = data
# Initialize network net = highwayNet(args) if args['use_cuda']: print('cuda success!') net = net.cuda() ## Initialize optimizer trainEpochs = 10 optimizer = torch.optim.Adam(net.parameters()) #lr = ... batch_size = 128 crossEnt = torch.nn.BCELoss() # binary cross entropy cav_ratio = 0.4 # change CAV percentage here -1 means CAV market place = 0, no neighbor CAV t_h = 30 # historical step 30 trSet = ngsimDataset('../../data/trajectory/TrainSet_us101.mat', t_h=t_h, CAV_ratio=cav_ratio) valSet = ngsimDataset('../../data/trajectory/ValSet_us101.mat', t_h=t_h, CAV_ratio=cav_ratio) trDataloader = DataLoader(trSet, batch_size=batch_size, shuffle=True, num_workers=8, collate_fn=trSet.collate_fn) valDataloader = DataLoader(valSet, batch_size=batch_size, shuffle=True, num_workers=8, collate_fn=valSet.collate_fn)