Policy evaluation during training
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
from src.utils.clearml import ClearMLHelper
|
||||
|
||||
#### ClearML ####
|
||||
clearml_helper = ClearMLHelper(project_name="Thesis/NrvForecast")
|
||||
task = clearml_helper.get_task(
|
||||
task_name="Autoregressive Quantile Regression: Non Linear"
|
||||
)
|
||||
task.execute_remotely(queue_name="default", exit_process=True)
|
||||
|
||||
from src.policies.PolicyEvaluator import PolicyEvaluator
|
||||
from src.policies.simple_baseline import BaselinePolicy, Battery
|
||||
from src.models.lstm_model import GRUModel
|
||||
@@ -13,11 +22,6 @@ import torch.nn as nn
|
||||
from src.models.time_embedding_layer import TimeEmbedding
|
||||
|
||||
|
||||
#### ClearML ####
|
||||
clearml_helper = ClearMLHelper(project_name="Thesis/NrvForecast")
|
||||
task = clearml_helper.get_task(task_name="Autoregressive Quantile Regression: Non Linear")
|
||||
|
||||
|
||||
#### Data Processor ####
|
||||
data_config = DataConfig()
|
||||
|
||||
@@ -34,7 +38,6 @@ data_config.DAY_OF_WEEK = True
|
||||
data_config.NOMINAL_NET_POSITION = True
|
||||
|
||||
|
||||
|
||||
data_config = task.connect(data_config, name="data_features")
|
||||
|
||||
data_processor = DataProcessor(data_config, path="", lstm=False)
|
||||
@@ -68,9 +71,17 @@ model_parameters = {
|
||||
|
||||
model_parameters = task.connect(model_parameters, name="model_parameters")
|
||||
|
||||
time_embedding = TimeEmbedding(data_processor.get_time_feature_size(), model_parameters["time_feature_embedding"])
|
||||
time_embedding = TimeEmbedding(
|
||||
data_processor.get_time_feature_size(), model_parameters["time_feature_embedding"]
|
||||
)
|
||||
# lstm_model = GRUModel(time_embedding.output_dim(inputDim), len(quantiles), hidden_size=model_parameters["hidden_size"], num_layers=model_parameters["num_layers"], dropout=model_parameters["dropout"])
|
||||
non_linear_model = NonLinearRegression(time_embedding.output_dim(inputDim), len(quantiles), hiddenSize=model_parameters["hidden_size"], numLayers=model_parameters["num_layers"], dropout=model_parameters["dropout"])
|
||||
non_linear_model = NonLinearRegression(
|
||||
time_embedding.output_dim(inputDim),
|
||||
len(quantiles),
|
||||
hiddenSize=model_parameters["hidden_size"],
|
||||
numLayers=model_parameters["num_layers"],
|
||||
dropout=model_parameters["dropout"],
|
||||
)
|
||||
# linear_model = LinearRegression(time_embedding.output_dim(inputDim), len(quantiles))
|
||||
|
||||
model = nn.Sequential(time_embedding, non_linear_model)
|
||||
@@ -103,10 +114,11 @@ trainer.train(task=task, epochs=epochs, remotely=True)
|
||||
### Policy Evaluation ###
|
||||
idx_samples = trainer.test_set_samples
|
||||
_, test_loader = trainer.data_processor.get_dataloaders(
|
||||
predict_sequence_length=trainer.model.output_size)
|
||||
predict_sequence_length=trainer.model.output_size, full_day_skip=True
|
||||
)
|
||||
|
||||
policy_evaluator.evaluate_test_set(idx_samples, test_loader)
|
||||
policy_evaluator.plot_profits_table()
|
||||
policy_evaluator.plot_thresholds_per_day()
|
||||
|
||||
task.close()
|
||||
task.close()
|
||||
|
||||
@@ -1,25 +1,17 @@
|
||||
from clearml import Task
|
||||
from src.data import DataProcessor, DataConfig
|
||||
from src.trainers.trainer import Trainer
|
||||
from src.utils.clearml import ClearMLHelper
|
||||
from src.models import *
|
||||
from src.losses import *
|
||||
import torch
|
||||
import numpy as np
|
||||
from torch.nn import MSELoss, L1Loss
|
||||
from datetime import datetime
|
||||
import torch.nn as nn
|
||||
from src.models.time_embedding_layer import TimeEmbedding
|
||||
from src.models.diffusion_model import GRUDiffusionModel, SimpleDiffusionModel
|
||||
from src.trainers.diffusion_trainer import DiffusionTrainer
|
||||
|
||||
|
||||
clearml_helper = ClearMLHelper(project_name="Thesis/NrvForecast")
|
||||
task = clearml_helper.get_task(task_name="Diffusion Training")
|
||||
|
||||
# execute remotely
|
||||
task.execute_remotely(queue_name="default", exit_process=True)
|
||||
print("Running remotely")
|
||||
|
||||
from src.models import *
|
||||
from src.losses import *
|
||||
from src.models.time_embedding_layer import TimeEmbedding
|
||||
from src.models.diffusion_model import GRUDiffusionModel, SimpleDiffusionModel
|
||||
from src.trainers.diffusion_trainer import DiffusionTrainer
|
||||
from src.data import DataProcessor, DataConfig
|
||||
from src.policies.simple_baseline import BaselinePolicy, Battery
|
||||
from src.policies.PolicyEvaluator import PolicyEvaluator
|
||||
|
||||
#### Data Processor ####
|
||||
data_config = DataConfig()
|
||||
@@ -54,11 +46,21 @@ model_parameters = {
|
||||
model_parameters = task.connect(model_parameters, name="model_parameters")
|
||||
|
||||
#### Model ####
|
||||
model = SimpleDiffusionModel(96, model_parameters["hidden_sizes"], other_inputs_dim=inputDim[1], time_dim=model_parameters["time_dim"])
|
||||
model = SimpleDiffusionModel(
|
||||
96,
|
||||
model_parameters["hidden_sizes"],
|
||||
other_inputs_dim=inputDim[1],
|
||||
time_dim=model_parameters["time_dim"],
|
||||
)
|
||||
# model = GRUDiffusionModel(96, model_parameters["hidden_sizes"], other_inputs_dim=inputDim[2], time_dim=model_parameters["time_dim"], gru_hidden_size=128)
|
||||
|
||||
print("Starting training ...")
|
||||
### Policy Evaluator ###
|
||||
battery = Battery(2, 1)
|
||||
baseline_policy = BaselinePolicy(battery, data_path="")
|
||||
policy_evaluator = PolicyEvaluator(baseline_policy, task)
|
||||
|
||||
#### Trainer ####
|
||||
trainer = DiffusionTrainer(model, data_processor, "cuda")
|
||||
trainer.train(model_parameters["epochs"], model_parameters["learning_rate"], task)
|
||||
trainer = DiffusionTrainer(
|
||||
model, data_processor, "cuda", policy_evaluator=policy_evaluator
|
||||
)
|
||||
trainer.train(model_parameters["epochs"], model_parameters["learning_rate"], task)
|
||||
|
||||
Reference in New Issue
Block a user