move POD-NN model

This commit is contained in:
Filippo Olivo
2025-10-02 10:20:16 +02:00
parent 4253469ba7
commit 876efea0a6
2 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
model:
model_class: model.pod_nn.PODNN
pod_rank: 128
layers: [16, 64, 128, 128, 64, 16]
optimizer:
optimizer_class: torch.optim.AdamW
lr: 0.001
trainer:
max_epochs: 10000
batch_size: 128
train_size: 0.9
val_size: 0.1
accelerator: 'cuda'
devices: 1
log_every_n_steps: 0
patience: 100
log_dir: logs/
name: pod_nn
# version: null

22
pod_nn/model/pod_nn.py Normal file
View File

@@ -0,0 +1,22 @@
import torch
from pina.model.block import PODBlock
from pina.model import FeedForward
class PODNN(torch.nn.Module):
def __init__(self, pod_rank, layers, func=torch.nn.Softplus):
super().__init__()
self.pod = PODBlock(pod_rank, scale_coefficients=False)
self.nn = FeedForward(
input_dimensions=3,
output_dimensions=pod_rank,
layers=layers,
func=func,
)
def forward(self, p):
coefficients = self.nn(p)
return self.pod.expand(coefficients)
def fit_pod(self, x):
self.pod.fit(x)