Add validation dataset to hyperparameter scan
This commit is contained in:
@@ -26,7 +26,13 @@ if not pathlib.Path("dataset.pt").exists():
|
||||
results = []
|
||||
for step in [1, 5, 10, 30]:
|
||||
dataset = dataloader.SaveDataset(torch.load("dataset.pt"), device="cuda", step=step)
|
||||
|
||||
dataset_length = len(dataset)
|
||||
dataset, val_dataset = torch.utils.data.random_split(
|
||||
dataset,
|
||||
[int(0.8 * dataset_length), dataset_length - int(0.8 * dataset_length)],
|
||||
generator=torch.Generator().manual_seed(42)
|
||||
)
|
||||
print(f"Starting hyperparameter scan for step={step}")
|
||||
for base_name, base_model in [
|
||||
("RNN", models.ThreeInputRNN),
|
||||
("LSTM", models.ThreeInputLSTM),
|
||||
@@ -63,6 +69,16 @@ for step in [1, 5, 10, 30]:
|
||||
loss = sum(loss_history) / len(loss_history)
|
||||
scheduler.step(loss)
|
||||
print(f"Epoch {epoch}: loss={loss}, lr={optimizer.param_groups[0]['lr']}")
|
||||
with torch.no_grad():
|
||||
val_loss_history = []
|
||||
for X_f, X_t, y, X_c in torch.utils.data.DataLoader(val_dataset, batch_size=256):
|
||||
warm_up_steps = 450 // step
|
||||
pred_steps = 150 // step
|
||||
y_pred, _ = model(X_t, X_f, X_c, warm_up_steps, pred_steps)
|
||||
v_loss = criterion(y_pred, y)
|
||||
val_loss_history.append(v_loss.item())
|
||||
loss = sum(val_loss_history) / len(val_loss_history)
|
||||
print(f"Validation loss: {loss}")
|
||||
torch.save(model.state_dict(), f"{base_name}_hs{hidden_size}_rs{rnn_size}_step{step}.pt")
|
||||
results.append((base_name, hidden_size, rnn_size, step, loss))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user