Aliazimi00 commited on
Commit
b47effb
·
verified ·
1 Parent(s): e1812d5

Update core/train_eval.py

Browse files
Files changed (1) hide show
  1. core/train_eval.py +9 -3
core/train_eval.py CHANGED
@@ -28,7 +28,7 @@ def mean_absolute_percentage_error(y_true, y_pred):
28
 
29
  def train_and_evaluate(
30
  df,
31
- future_df, # Added
32
  model_cls,
33
  horizon=1,
34
  hidden=64,
@@ -77,7 +77,7 @@ def train_and_evaluate(
77
  model = model_cls(input_size=input_dim, hidden_size=hidden, num_layers=layers, output_size=horizon, dropout=dropout).to(device)
78
  optimizer = torch.optim.AdamW(model.parameters(), lr=lr, betas=(beta1, beta2), weight_decay=weight_decay)
79
  loss_fn = nn.MSELoss()
80
- scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', patience=5, factor=0.5, threshold=1e-4, verbose=True)
81
 
82
  train_losses = []
83
  val_losses = []
@@ -85,6 +85,7 @@ def train_and_evaluate(
85
  patience = 5
86
  counter = 0
87
  best_model_state = None
 
88
 
89
  model.train()
90
  for epoch in range(epochs):
@@ -110,10 +111,15 @@ def train_and_evaluate(
110
  val_loss /= len(val_loader)
111
  val_losses.append(val_loss)
112
 
 
113
  scheduler.step(val_loss)
 
 
 
 
114
 
115
  if verbose and (epoch + 1) % 10 == 0:
116
- print(f"Epoch {epoch+1}/{epochs} - Train Loss: {train_losses[-1]:.4f}, Val Loss: {val_losses[-1]:.4f}, LR: {optimizer.param_groups[0]['lr']:.6f}")
117
 
118
  if val_loss < best_val_loss:
119
  best_val_loss = val_loss
 
28
 
29
  def train_and_evaluate(
30
  df,
31
+ future_df,
32
  model_cls,
33
  horizon=1,
34
  hidden=64,
 
77
  model = model_cls(input_size=input_dim, hidden_size=hidden, num_layers=layers, output_size=horizon, dropout=dropout).to(device)
78
  optimizer = torch.optim.AdamW(model.parameters(), lr=lr, betas=(beta1, beta2), weight_decay=weight_decay)
79
  loss_fn = nn.MSELoss()
80
+ scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', patience=5, factor=0.5, threshold=1e-4)
81
 
82
  train_losses = []
83
  val_losses = []
 
85
  patience = 5
86
  counter = 0
87
  best_model_state = None
88
+ last_lr = lr # Track learning rate for manual logging
89
 
90
  model.train()
91
  for epoch in range(epochs):
 
111
  val_loss /= len(val_loader)
112
  val_losses.append(val_loss)
113
 
114
+ # Step scheduler and manually log learning rate changes
115
  scheduler.step(val_loss)
116
+ current_lr = optimizer.param_groups[0]['lr']
117
+ if current_lr != last_lr and verbose:
118
+ print(f"Epoch {epoch+1}: Learning rate reduced to {current_lr:.6f}")
119
+ last_lr = current_lr
120
 
121
  if verbose and (epoch + 1) % 10 == 0:
122
+ print(f"Epoch {epoch+1}/{epochs} - Train Loss: {train_losses[-1]:.4f}, Val Loss: {val_losses[-1]:.4f}, LR: {current_lr:.6f}")
123
 
124
  if val_loss < best_val_loss:
125
  best_val_loss = val_loss