Documentation for v0.1 version (#199)
* Adding Equations, solving typos * improve _code.rst * the team rst and restuctore index.rst * fixing errors --------- Co-authored-by: Dario Coscia <dariocoscia@dhcp-015.eduroam.sissa.it>
This commit is contained in:
committed by
Nicola Demo
parent
3f9305d475
commit
8b7b61b3bd
@@ -32,36 +32,39 @@ def test_constructor_fails_when_invalid_inner_layer_size():
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
|
||||
|
||||
def test_forward_extract_str():
|
||||
branch_net = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
trunk_net = FeedForward(input_dimensions=2, output_dimensions=10)
|
||||
model = DeepONet(branch_net=branch_net,
|
||||
trunk_net=trunk_net,
|
||||
input_indeces_branch_net=['a'],
|
||||
input_indeces_trunk_net=['b', 'c'],
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
trunk_net=trunk_net,
|
||||
input_indeces_branch_net=['a'],
|
||||
input_indeces_trunk_net=['b', 'c'],
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
model(input_)
|
||||
|
||||
|
||||
def test_forward_extract_int():
|
||||
branch_net = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
trunk_net = FeedForward(input_dimensions=2, output_dimensions=10)
|
||||
model = DeepONet(branch_net=branch_net,
|
||||
trunk_net=trunk_net,
|
||||
input_indeces_branch_net=[0],
|
||||
input_indeces_trunk_net=[1, 2],
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
trunk_net=trunk_net,
|
||||
input_indeces_branch_net=[0],
|
||||
input_indeces_trunk_net=[1, 2],
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
model(data)
|
||||
|
||||
|
||||
def test_forward_extract_str_wrong():
|
||||
branch_net = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
trunk_net = FeedForward(input_dimensions=2, output_dimensions=10)
|
||||
model = DeepONet(branch_net=branch_net,
|
||||
trunk_net=trunk_net,
|
||||
input_indeces_branch_net=['a'],
|
||||
input_indeces_trunk_net=['b', 'c'],
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
trunk_net=trunk_net,
|
||||
input_indeces_branch_net=['a'],
|
||||
input_indeces_trunk_net=['b', 'c'],
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
with pytest.raises(RuntimeError):
|
||||
model(data)
|
||||
|
||||
@@ -3,7 +3,6 @@ import pytest
|
||||
|
||||
from pina.model import FeedForward
|
||||
|
||||
|
||||
data = torch.rand((20, 3))
|
||||
input_vars = 3
|
||||
output_vars = 4
|
||||
@@ -13,19 +12,24 @@ def test_constructor():
|
||||
FeedForward(input_vars, output_vars)
|
||||
FeedForward(input_vars, output_vars, inner_size=10, n_layers=20)
|
||||
FeedForward(input_vars, output_vars, layers=[10, 20, 5, 2])
|
||||
FeedForward(input_vars, output_vars, layers=[10, 20, 5, 2],
|
||||
FeedForward(input_vars,
|
||||
output_vars,
|
||||
layers=[10, 20, 5, 2],
|
||||
func=torch.nn.ReLU)
|
||||
FeedForward(input_vars, output_vars, layers=[10, 20, 5, 2],
|
||||
FeedForward(input_vars,
|
||||
output_vars,
|
||||
layers=[10, 20, 5, 2],
|
||||
func=[torch.nn.ReLU, torch.nn.ReLU, None, torch.nn.Tanh])
|
||||
|
||||
|
||||
def test_constructor_wrong():
|
||||
with pytest.raises(RuntimeError):
|
||||
FeedForward(input_vars, output_vars, layers=[10, 20, 5, 2],
|
||||
FeedForward(input_vars,
|
||||
output_vars,
|
||||
layers=[10, 20, 5, 2],
|
||||
func=[torch.nn.ReLU, torch.nn.ReLU])
|
||||
|
||||
|
||||
|
||||
def test_forward():
|
||||
dim_in, dim_out = 3, 2
|
||||
fnn = FeedForward(dim_in, dim_out)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import torch
|
||||
from pina.model import FNO
|
||||
|
||||
|
||||
output_channels = 5
|
||||
batch_size = 15
|
||||
resolution = [30, 40, 50]
|
||||
@@ -11,7 +10,7 @@ lifting_dim = 128
|
||||
def test_constructor():
|
||||
input_channels = 3
|
||||
lifting_net = torch.nn.Linear(input_channels, lifting_dim)
|
||||
projecting_net = torch.nn.Linear(60, output_channels)
|
||||
projecting_net = torch.nn.Linear(60, output_channels)
|
||||
|
||||
# simple constructor
|
||||
FNO(lifting_net=lifting_net,
|
||||
@@ -20,7 +19,7 @@ def test_constructor():
|
||||
dimensions=3,
|
||||
inner_size=60,
|
||||
n_layers=5)
|
||||
|
||||
|
||||
# simple constructor with n_modes list
|
||||
FNO(lifting_net=lifting_net,
|
||||
projecting_net=projecting_net,
|
||||
@@ -36,53 +35,61 @@ def test_constructor():
|
||||
dimensions=3,
|
||||
inner_size=60,
|
||||
n_layers=2)
|
||||
|
||||
|
||||
# simple constructor with n_modes list of list
|
||||
projecting_net = torch.nn.Linear(50, output_channels)
|
||||
projecting_net = torch.nn.Linear(50, output_channels)
|
||||
FNO(lifting_net=lifting_net,
|
||||
projecting_net=projecting_net,
|
||||
n_modes=5,
|
||||
dimensions=3,
|
||||
layers=[50, 50])
|
||||
|
||||
|
||||
|
||||
def test_1d_forward():
|
||||
input_channels = 1
|
||||
input_ = torch.rand(batch_size, resolution[0], input_channels)
|
||||
lifting_net = torch.nn.Linear(input_channels, lifting_dim)
|
||||
projecting_net = torch.nn.Linear(60, output_channels)
|
||||
fno = FNO(lifting_net=lifting_net,
|
||||
projecting_net=projecting_net,
|
||||
n_modes=5,
|
||||
dimensions=1,
|
||||
inner_size=60,
|
||||
n_layers=2)
|
||||
projecting_net=projecting_net,
|
||||
n_modes=5,
|
||||
dimensions=1,
|
||||
inner_size=60,
|
||||
n_layers=2)
|
||||
out = fno(input_)
|
||||
assert out.shape == torch.Size([batch_size, resolution[0], output_channels])
|
||||
|
||||
|
||||
def test_2d_forward():
|
||||
input_channels = 2
|
||||
input_ = torch.rand(batch_size, resolution[0], resolution[1], input_channels)
|
||||
input_ = torch.rand(batch_size, resolution[0], resolution[1],
|
||||
input_channels)
|
||||
lifting_net = torch.nn.Linear(input_channels, lifting_dim)
|
||||
projecting_net = torch.nn.Linear(60, output_channels)
|
||||
fno = FNO(lifting_net=lifting_net,
|
||||
projecting_net=projecting_net,
|
||||
n_modes=5,
|
||||
dimensions=2,
|
||||
inner_size=60,
|
||||
n_layers=2)
|
||||
projecting_net=projecting_net,
|
||||
n_modes=5,
|
||||
dimensions=2,
|
||||
inner_size=60,
|
||||
n_layers=2)
|
||||
out = fno(input_)
|
||||
assert out.shape == torch.Size([batch_size, resolution[0], resolution[1], output_channels])
|
||||
assert out.shape == torch.Size(
|
||||
[batch_size, resolution[0], resolution[1], output_channels])
|
||||
|
||||
|
||||
def test_3d_forward():
|
||||
input_channels = 3
|
||||
input_ = torch.rand(batch_size, resolution[0], resolution[1], resolution[2], input_channels)
|
||||
input_ = torch.rand(batch_size, resolution[0], resolution[1], resolution[2],
|
||||
input_channels)
|
||||
lifting_net = torch.nn.Linear(input_channels, lifting_dim)
|
||||
projecting_net = torch.nn.Linear(60, output_channels)
|
||||
fno = FNO(lifting_net=lifting_net,
|
||||
projecting_net=projecting_net,
|
||||
n_modes=5,
|
||||
dimensions=3,
|
||||
inner_size=60,
|
||||
n_layers=2)
|
||||
projecting_net=projecting_net,
|
||||
n_modes=5,
|
||||
dimensions=3,
|
||||
inner_size=60,
|
||||
n_layers=2)
|
||||
out = fno(input_)
|
||||
assert out.shape == torch.Size([batch_size, resolution[0], resolution[1], resolution[2], output_channels])
|
||||
assert out.shape == torch.Size([
|
||||
batch_size, resolution[0], resolution[1], resolution[2], output_channels
|
||||
])
|
||||
|
||||
@@ -14,59 +14,42 @@ def test_constructor():
|
||||
branch_net1 = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
branch_net2 = FeedForward(input_dimensions=2, output_dimensions=10)
|
||||
trunk_net = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
networks = {branch_net1 : ['x'],
|
||||
branch_net2 : ['x', 'y'],
|
||||
trunk_net : ['z']}
|
||||
MIONet(networks=networks,
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
networks = {branch_net1: ['x'], branch_net2: ['x', 'y'], trunk_net: ['z']}
|
||||
MIONet(networks=networks, reduction='+', aggregator='*')
|
||||
|
||||
|
||||
def test_constructor_fails_when_invalid_inner_layer_size():
|
||||
branch_net1 = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
branch_net2 = FeedForward(input_dimensions=2, output_dimensions=10)
|
||||
trunk_net = FeedForward(input_dimensions=1, output_dimensions=12)
|
||||
networks = {branch_net1 : ['x'],
|
||||
branch_net2 : ['x', 'y'],
|
||||
trunk_net : ['z']}
|
||||
networks = {branch_net1: ['x'], branch_net2: ['x', 'y'], trunk_net: ['z']}
|
||||
with pytest.raises(ValueError):
|
||||
MIONet(networks=networks,
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
MIONet(networks=networks, reduction='+', aggregator='*')
|
||||
|
||||
|
||||
def test_forward_extract_str():
|
||||
branch_net1 = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
branch_net2 = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
trunk_net = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
networks = {branch_net1 : ['a'],
|
||||
branch_net2 : ['b'],
|
||||
trunk_net : ['c']}
|
||||
model = MIONet(networks=networks,
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
networks = {branch_net1: ['a'], branch_net2: ['b'], trunk_net: ['c']}
|
||||
model = MIONet(networks=networks, reduction='+', aggregator='*')
|
||||
model(input_)
|
||||
|
||||
|
||||
def test_forward_extract_int():
|
||||
branch_net1 = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
branch_net2 = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
trunk_net = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
networks = {branch_net1 : [0],
|
||||
branch_net2 : [1],
|
||||
trunk_net : [2]}
|
||||
model = MIONet(networks=networks,
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
networks = {branch_net1: [0], branch_net2: [1], trunk_net: [2]}
|
||||
model = MIONet(networks=networks, reduction='+', aggregator='*')
|
||||
model(data)
|
||||
|
||||
|
||||
def test_forward_extract_str_wrong():
|
||||
branch_net1 = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
branch_net2 = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
trunk_net = FeedForward(input_dimensions=1, output_dimensions=10)
|
||||
networks = {branch_net1 : ['a'],
|
||||
branch_net2 : ['b'],
|
||||
trunk_net : ['c']}
|
||||
model = MIONet(networks=networks,
|
||||
reduction='+',
|
||||
aggregator='*')
|
||||
networks = {branch_net1: ['a'], branch_net2: ['b'], trunk_net: ['c']}
|
||||
model = MIONet(networks=networks, reduction='+', aggregator='*')
|
||||
with pytest.raises(RuntimeError):
|
||||
model(data)
|
||||
|
||||
@@ -2,21 +2,25 @@ import torch
|
||||
import pytest
|
||||
from pina.model import ResidualFeedForward
|
||||
|
||||
|
||||
def test_constructor():
|
||||
# simple constructor
|
||||
ResidualFeedForward(input_dimensions=2, output_dimensions=1)
|
||||
|
||||
# wrong transformer nets (not 2)
|
||||
with pytest.raises(ValueError):
|
||||
ResidualFeedForward(input_dimensions=2, output_dimensions=1, transformer_nets=[torch.nn.Linear(2, 20)])
|
||||
ResidualFeedForward(input_dimensions=2,
|
||||
output_dimensions=1,
|
||||
transformer_nets=[torch.nn.Linear(2, 20)])
|
||||
|
||||
# wrong transformer nets (not nn.Module)
|
||||
with pytest.raises(ValueError):
|
||||
ResidualFeedForward(input_dimensions=2, output_dimensions=1, transformer_nets=[2, 2])
|
||||
ResidualFeedForward(input_dimensions=2,
|
||||
output_dimensions=1,
|
||||
transformer_nets=[2, 2])
|
||||
|
||||
|
||||
def test_forward():
|
||||
x = torch.rand(10, 2)
|
||||
model = ResidualFeedForward(input_dimensions=2, output_dimensions=1)
|
||||
model(x)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user