Files
PINA/tests/test_blocks/test_spectral_convolution.py
Filippo Olivo 4177bfbb50 Fix Codacy Warnings (#477)
---------

Co-authored-by: Dario Coscia <dariocos99@gmail.com>
2025-03-19 17:48:18 +01:00

107 lines
2.5 KiB
Python

from pina.model.block import (
SpectralConvBlock1D,
SpectralConvBlock2D,
SpectralConvBlock3D,
)
import torch
input_numb_fields = 3
output_numb_fields = 4
batch = 5
def test_constructor_1d():
SpectralConvBlock1D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=5,
)
def test_forward_1d():
sconv = SpectralConvBlock1D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=4,
)
x = torch.rand(batch, input_numb_fields, 10)
sconv(x)
def test_backward_1d():
sconv = SpectralConvBlock1D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=4,
)
x = torch.rand(batch, input_numb_fields, 10)
x.requires_grad = True
sconv(x)
l = torch.mean(sconv(x))
l.backward()
assert x._grad.shape == torch.Size([5, 3, 10])
def test_constructor_2d():
SpectralConvBlock2D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=[5, 4],
)
def test_forward_2d():
sconv = SpectralConvBlock2D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=[5, 4],
)
x = torch.rand(batch, input_numb_fields, 10, 10)
sconv(x)
def test_backward_2d():
sconv = SpectralConvBlock2D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=[5, 4],
)
x = torch.rand(batch, input_numb_fields, 10, 10)
x.requires_grad = True
sconv(x)
l = torch.mean(sconv(x))
l.backward()
assert x._grad.shape == torch.Size([5, 3, 10, 10])
def test_constructor_3d():
SpectralConvBlock3D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=[5, 4, 4],
)
def test_forward_3d():
sconv = SpectralConvBlock3D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=[5, 4, 4],
)
x = torch.rand(batch, input_numb_fields, 10, 10, 10)
sconv(x)
def test_backward_3d():
sconv = SpectralConvBlock3D(
input_numb_fields=input_numb_fields,
output_numb_fields=output_numb_fields,
n_modes=[5, 4, 4],
)
x = torch.rand(batch, input_numb_fields, 10, 10, 10)
x.requires_grad = True
sconv(x)
l = torch.mean(sconv(x))
l.backward()
assert x._grad.shape == torch.Size([5, 3, 10, 10, 10])