|
|
"""Average value model""" |
|
|
import torch |
|
|
from torch import nn |
|
|
|
|
|
import pvnet |
|
|
from pvnet.models.base_model import BaseModel |
|
|
from pvnet.optimizers import AbstractOptimizer |
|
|
|
|
|
|
|
|
class Model(BaseModel): |
|
|
"""Simple baseline model that predicts always the same value.""" |
|
|
|
|
|
name = "single_value" |
|
|
|
|
|
def __init__( |
|
|
self, |
|
|
forecast_minutes: int = 120, |
|
|
history_minutes: int = 60, |
|
|
optimizer: AbstractOptimizer = pvnet.optimizers.Adam(), |
|
|
): |
|
|
"""Simple baseline model that predicts always the same value. |
|
|
|
|
|
Args: |
|
|
history_minutes (int): Length of the GSP history period in minutes |
|
|
forecast_minutes (int): Length of the GSP forecast period in minutes |
|
|
optimizer (AbstractOptimizer): Optimizer |
|
|
""" |
|
|
super().__init__(history_minutes, forecast_minutes, optimizer) |
|
|
self._value = nn.Parameter(torch.zeros(1), requires_grad=True) |
|
|
self.save_hyperparameters() |
|
|
|
|
|
def forward(self, x: dict): |
|
|
"""Run model forward on dict batch of data""" |
|
|
|
|
|
y_hat = torch.zeros_like(x["gsp"][:, : self.forecast_len]) + self._value |
|
|
return y_hat |
|
|
|