Commit c78c4cd8 authored by rusty1s's avatar rusty1s
Browse files

removed unused functions

parent 4ce1c05f
......@@ -31,15 +31,14 @@ def test_spline_conv_cpu(tensor):
]
expected_output = [
(1 + 12.5 * 9 + 13 * 10 + sum(edgewise_output)) / 5,
1 + 12.5 * 1 + 13 * 2,
1 + 12.5 * 3 + 13 * 4,
1 + 12.5 * 5 + 13 * 6,
1 + 12.5 * 7 + 13 * 8,
[1 + 12.5 * 9 + 13 * 10 + sum(edgewise_output) / 4],
[1 + 12.5 * 1 + 13 * 2],
[1 + 12.5 * 3 + 13 * 4],
[1 + 12.5 * 5 + 13 * 6],
[1 + 12.5 * 7 + 13 * 8],
]
output = [pytest.approx(o, 0.01) for o in output.view(-1).tolist()]
assert output == expected_output
assert output.tolist() == expected_output
x, weight, pseudo = Variable(x), Variable(weight), Variable(pseudo)
root_weight, bias = Variable(root_weight), Variable(bias)
......@@ -47,8 +46,7 @@ def test_spline_conv_cpu(tensor):
output = spline_conv(x, edge_index, pseudo, weight, kernel_size,
is_open_spline, 1, root_weight, bias)
output = [pytest.approx(o, 0.01) for o in output.data.view(-1).tolist()]
assert output == expected_output
assert output.data.tolist() == expected_output
def test_spline_weighting_backward_cpu():
......
......@@ -15,39 +15,12 @@ def spline_conv(x,
root_weight=None,
bias=None):
# Convolve over each node.
output = basic_spline_conv(x, edge_index, pseudo, weight, kernel_size,
is_open_spline, degree)
# Compute degree.
degree = x.new() if torch.is_tensor(x) else x.data.new()
degree = node_degree(edge_index, x.size(0), out=degree)
# Weight root node separately (if wished).
if root_weight is not None:
output += torch.mm(x, root_weight)
degree += 1
# Normalize output by node degree.
degree = degree.unsqueeze(-1).clamp_(min=1)
output /= degree if torch.is_tensor(x) else Var(degree)
# Add bias (if wished).
if bias is not None:
output += bias
return output
def basic_spline_conv(x, edge_index, pseudo, weight, kernel_size,
is_open_spline, degree):
n, e, m_out = x.size(0), edge_index.size(1), weight.size(2)
x = x.unsqueeze(-1) if x.dim() == 1 else x
pseudo = pseudo.unsqueeze(-1) if pseudo.dim() == 1 else pseudo
# Weight gathered features based on B-spline bases and trainable weights.
# Convolve over each node.
output = spline_weighting(x[edge_index[1]], pseudo, weight, kernel_size,
is_open_spline, degree)
......@@ -57,4 +30,20 @@ def basic_spline_conv(x, edge_index, pseudo, weight, kernel_size,
zero = x.new(n, m_out) if torch.is_tensor(x) else Var(x.data.new(n, m_out))
output = zero.fill_(0).scatter_add_(0, row, output)
# Compute degree.
degree = x.new() if torch.is_tensor(x) else x.data.new()
degree = node_degree(edge_index, n, out=degree)
# Normalize output by node degree.
degree = degree.unsqueeze(-1).clamp_(min=1)
output /= degree if torch.is_tensor(x) else Var(degree)
# Weight root node separately (if wished).
if root_weight is not None:
output += torch.mm(x, root_weight)
# Add bias (if wished).
if bias is not None:
output += bias
return output
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment