예제 #1
0
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']
예제 #4
0
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