Added LSTM model
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from src.models.lstm_model import LSTMModel, GRUModel
|
||||
from src.data import DataProcessor, DataConfig
|
||||
from src.trainers.quantile_trainer import AutoRegressiveQuantileTrainer, NonAutoRegressiveQuantileRegression
|
||||
from src.trainers.probabilistic_baseline import ProbabilisticBaselineTrainer
|
||||
@@ -28,19 +29,21 @@ data_config.LOAD_FORECAST = True
|
||||
data_config.QUARTER = True
|
||||
data_config.DAY_OF_WEEK = True
|
||||
|
||||
data_config = task.connect(data_config, name="data_features")
|
||||
# data_config = task.connect(data_config, name="data_features")
|
||||
|
||||
data_processor = DataProcessor(data_config, path="")
|
||||
data_processor.set_batch_size(1024)
|
||||
data_processor = DataProcessor(data_config, path="", lstm=True)
|
||||
data_processor.set_batch_size(512)
|
||||
data_processor.set_full_day_skip(False)
|
||||
|
||||
|
||||
#### Hyperparameters ####
|
||||
data_processor.set_output_size(1)
|
||||
inputDim = data_processor.get_input_size()
|
||||
learningRate = 0.0001
|
||||
learningRate = 0.001
|
||||
epochs = 100
|
||||
|
||||
print("Input dim: ", inputDim)
|
||||
|
||||
# add parameters to clearml
|
||||
quantiles = task.get_parameter("general/quantiles", cast=True)
|
||||
if quantiles is None:
|
||||
@@ -49,8 +52,9 @@ if quantiles is None:
|
||||
|
||||
# model = LinearRegression(inputDim, len(quantiles))
|
||||
time_embedding = TimeEmbedding(data_processor.get_time_feature_size(), 4)
|
||||
non_linear_regression_model = NonLinearRegression(time_embedding.output_dim(inputDim), len(quantiles), hiddenSize=1024, numLayers=5)
|
||||
model = nn.Sequential(time_embedding, non_linear_regression_model)
|
||||
# non_linear_regression_model = NonLinearRegression(time_embedding.output_dim(inputDim), len(quantiles), hiddenSize=1024, numLayers=5)
|
||||
lstm_model = GRUModel(time_embedding.output_dim(inputDim), len(quantiles), hidden_size=512, num_layers=2)
|
||||
model = nn.Sequential(time_embedding, lstm_model)
|
||||
optimizer = torch.optim.Adam(model.parameters(), lr=learningRate)
|
||||
|
||||
#### Trainer ####
|
||||
@@ -62,9 +66,10 @@ trainer = AutoRegressiveQuantileTrainer(
|
||||
"cuda",
|
||||
debug=True,
|
||||
)
|
||||
|
||||
trainer.add_metrics_to_track(
|
||||
[PinballLoss(quantiles), MSELoss(), L1Loss(), CRPSLoss()]
|
||||
)
|
||||
trainer.early_stopping(patience=10)
|
||||
trainer.plot_every(5)
|
||||
trainer.train(task=task, epochs=epochs, remotely=False)
|
||||
trainer.plot_every(100)
|
||||
trainer.train(task=task, epochs=epochs, remotely=True)
|
||||
Reference in New Issue
Block a user