def db_from_df(train, test, bs=1024): # Create TensorDatasets train_ds = TensorDataset(torch.tensor(train.values), torch.tensor(train.values)) valid_ds = TensorDataset(torch.tensor(test.values), torch.tensor(test.values)) # Create DataLoaders train_dl, valid_dl = get_data(train_ds, valid_ds, bs=bs) # Return DataBunch return basic_data.DataBunch(train_dl, valid_dl)
def train_evaluate_model(model_class, num_epochs): model = model_class() train_dl, valid_dl, train_x, train_y, test_x, test_y = load_data(batch_size = 256) db = basic_data.DataBunch(train_dl, valid_dl) loss_func = nn.MSELoss() bn_wd = False # Don't use weight decay fpr batchnorm layers true_wd = True # wd will be used for all optimizers wd = 1e-6 plots_path, model_name = make_plots_dir(model_class) learn = basic_train.Learner(data=db, model=model, loss_func=loss_func, wd=wd, callback_fns=ActivationStats, bn_wd=bn_wd, true_wd=true_wd) #tr.lr_find(learn, start_lr=1e-8) #losses = [loss.item() for loss in learn.recorder.losses] #lr = round(learn.recorder.lrs[np.argmin(np.array(losses))], 4) #lr_plot = learn.recorder.plot(return_fig=True) #lr_plot.savefig('lr_plot.png') lr = 3e-4 learn.fit(num_epochs, lr=lr, wd=wd) learn.save(model_name) loss_plot = learn.recorder.plot_losses(return_fig=True) loss_plot.savefig(plots_path + 'loss_plot.png') plt.plot(learn.recorder.val_losses, marker='>') plt.savefig(plots_path + 'val_losses.png') plot_activations(learn, save = plots_path) loss = learn.validate()[0] plt.close('all') current_save_folder = plots_path make_plots(model, train_x, train_y, test_x, test_y, current_save_folder, model_name) return loss
test = pd.read_pickle(BIN + 'processed_data/aod/custom_normalized_test_10percent') # Remove Width and WidthPhi train.pop('Width') train.pop('WidthPhi') test.pop('Width') test.pop('WidthPhi') bs = 4096 # Create TensorDatasets train_ds = TensorDataset(torch.tensor(train.values, dtype=torch.float), torch.tensor(train.values, dtype=torch.float)) valid_ds = TensorDataset(torch.tensor(test.values, dtype=torch.float), torch.tensor(test.values, dtype=torch.float)) # Create DataLoaders train_dl, valid_dl = get_data(train_ds, valid_ds, bs=bs) # Return DataBunch db = basic_data.DataBunch(train_dl, valid_dl) # loss_func = RMSELoss() loss_func = nn.MSELoss() bn_wd = False # Don't use weight decay for batchnorm layers true_wd = True # wd will be used for all optimizers # Figures setup plt.close('all') unit_list = ['[GeV]', '[rad]', '[rad]', '[GeV]'] variable_list = [r'$p_T$', r'$\eta$', r'$\phi$', r'$E$'] line_style = ['--', '-'] colors = ['orange', 'c'] markers = ['*', 's']
def prepare_data(X, bs): train_ds = TensorDataset(torch.tensor(X), torch.tensor(X)) valid_ds = TensorDataset(torch.tensor(X_test), torch.tensor(X_test)) train_dl, valid_dl = get_data(train_ds, valid_ds, bs=bs) db = basic_data.DataBunch(train_dl, valid_dl) return db