| from typing import Type, Optional | |
| import torch | |
| from torch import nn as nn | |
| class SimpleMlp(nn.Module): | |
| """ | |
| A class for very simple multi layer perceptron | |
| """ | |
| def __init__(self, in_dim=2, out_dim=1, hidden_dim=64, n_layers=2, | |
| activation: Type[nn.Module] = nn.ReLU, output_activation: Optional[Type[nn.Module]] = None): | |
| super(SimpleMlp, self).__init__() | |
| layers = [nn.Linear(in_dim, hidden_dim), activation()] | |
| layers.extend([nn.Linear(hidden_dim, hidden_dim), activation()] * (n_layers - 2)) | |
| layers.append(nn.Linear(hidden_dim, out_dim)) | |
| if output_activation: | |
| layers.append(output_activation()) | |
| self.net = nn.Sequential(*layers) | |
| def forward(self, x): | |
| return self.net(x) | |