Simplify Graph class (#459)
* Simplifying Graph class and adjust tests --------- Co-authored-by: Dario Coscia <dariocos99@gmail.com>
This commit is contained in:
committed by
Nicola Demo
parent
4c3e305b09
commit
ab6ca78d85
@@ -6,99 +6,90 @@ from torch_geometric.data import Batch
|
||||
|
||||
x = [torch.rand(100, 6) for _ in range(10)]
|
||||
pos = [torch.rand(100, 3) for _ in range(10)]
|
||||
graph = KNNGraph(x=x, pos=pos, build_edge_attr=True, k=6)
|
||||
input_ = Batch.from_data_list(graph.data)
|
||||
graph = [
|
||||
KNNGraph(x=x_, pos=pos_, neighbours=6, edge_attr=True)
|
||||
for x_, pos_ in zip(x, pos)
|
||||
]
|
||||
input_ = Batch.from_data_list(graph)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"shared_weights",
|
||||
[
|
||||
True,
|
||||
False
|
||||
]
|
||||
)
|
||||
@pytest.mark.parametrize("shared_weights", [True, False])
|
||||
def test_constructor(shared_weights):
|
||||
lifting_operator = torch.nn.Linear(6, 16)
|
||||
projection_operator = torch.nn.Linear(16, 3)
|
||||
GraphNeuralOperator(lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
internal_layers=[16, 16],
|
||||
shared_weights=shared_weights)
|
||||
GraphNeuralOperator(
|
||||
lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
internal_layers=[16, 16],
|
||||
shared_weights=shared_weights,
|
||||
)
|
||||
|
||||
GraphNeuralOperator(lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
inner_size=16,
|
||||
internal_n_layers=10,
|
||||
shared_weights=shared_weights)
|
||||
GraphNeuralOperator(
|
||||
lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
inner_size=16,
|
||||
internal_n_layers=10,
|
||||
shared_weights=shared_weights,
|
||||
)
|
||||
|
||||
int_func = torch.nn.Softplus
|
||||
ext_func = torch.nn.ReLU
|
||||
|
||||
GraphNeuralOperator(lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
internal_n_layers=10,
|
||||
shared_weights=shared_weights,
|
||||
internal_func=int_func,
|
||||
external_func=ext_func)
|
||||
GraphNeuralOperator(
|
||||
lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
internal_n_layers=10,
|
||||
shared_weights=shared_weights,
|
||||
internal_func=int_func,
|
||||
external_func=ext_func,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"shared_weights",
|
||||
[
|
||||
True,
|
||||
False
|
||||
]
|
||||
)
|
||||
@pytest.mark.parametrize("shared_weights", [True, False])
|
||||
def test_forward_1(shared_weights):
|
||||
lifting_operator = torch.nn.Linear(6, 16)
|
||||
projection_operator = torch.nn.Linear(16, 3)
|
||||
model = GraphNeuralOperator(lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
internal_layers=[16, 16],
|
||||
shared_weights=shared_weights)
|
||||
model = GraphNeuralOperator(
|
||||
lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
internal_layers=[16, 16],
|
||||
shared_weights=shared_weights,
|
||||
)
|
||||
output_ = model(input_)
|
||||
assert output_.shape == torch.Size([1000, 3])
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"shared_weights",
|
||||
[
|
||||
True,
|
||||
False
|
||||
]
|
||||
)
|
||||
@pytest.mark.parametrize("shared_weights", [True, False])
|
||||
def test_forward_2(shared_weights):
|
||||
lifting_operator = torch.nn.Linear(6, 16)
|
||||
projection_operator = torch.nn.Linear(16, 3)
|
||||
model = GraphNeuralOperator(lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
inner_size=32,
|
||||
internal_n_layers=2,
|
||||
shared_weights=shared_weights)
|
||||
model = GraphNeuralOperator(
|
||||
lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
inner_size=32,
|
||||
internal_n_layers=2,
|
||||
shared_weights=shared_weights,
|
||||
)
|
||||
output_ = model(input_)
|
||||
assert output_.shape == torch.Size([1000, 3])
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"shared_weights",
|
||||
[
|
||||
True,
|
||||
False
|
||||
]
|
||||
)
|
||||
@pytest.mark.parametrize("shared_weights", [True, False])
|
||||
def test_backward(shared_weights):
|
||||
lifting_operator = torch.nn.Linear(6, 16)
|
||||
projection_operator = torch.nn.Linear(16, 3)
|
||||
model = GraphNeuralOperator(lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
internal_layers=[16, 16],
|
||||
shared_weights=shared_weights)
|
||||
model = GraphNeuralOperator(
|
||||
lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
internal_layers=[16, 16],
|
||||
shared_weights=shared_weights,
|
||||
)
|
||||
input_.x.requires_grad = True
|
||||
output_ = model(input_)
|
||||
l = torch.mean(output_)
|
||||
@@ -106,22 +97,18 @@ def test_backward(shared_weights):
|
||||
assert input_.x.grad.shape == torch.Size([1000, 6])
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"shared_weights",
|
||||
[
|
||||
True,
|
||||
False
|
||||
]
|
||||
)
|
||||
@pytest.mark.parametrize("shared_weights", [True, False])
|
||||
def test_backward_2(shared_weights):
|
||||
lifting_operator = torch.nn.Linear(6, 16)
|
||||
projection_operator = torch.nn.Linear(16, 3)
|
||||
model = GraphNeuralOperator(lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
inner_size=32,
|
||||
internal_n_layers=2,
|
||||
shared_weights=shared_weights)
|
||||
model = GraphNeuralOperator(
|
||||
lifting_operator=lifting_operator,
|
||||
projection_operator=projection_operator,
|
||||
edge_features=3,
|
||||
inner_size=32,
|
||||
internal_n_layers=2,
|
||||
shared_weights=shared_weights,
|
||||
)
|
||||
input_.x.requires_grad = True
|
||||
output_ = model(input_)
|
||||
l = torch.mean(output_)
|
||||
|
||||
Reference in New Issue
Block a user