Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
torch-cluster
Commits
235d586b
You need to sign in or sign up before continuing.
Commit
235d586b
authored
Mar 28, 2018
by
rusty1s
Browse files
better degree impl
parent
efaa27c1
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
12 deletions
+10
-12
test/utils/test_degree.py
test/utils/test_degree.py
+6
-8
torch_cluster/functions/utils/degree.py
torch_cluster/functions/utils/degree.py
+4
-4
No files found.
test/utils/test_degree.py
View file @
235d586b
...
@@ -4,27 +4,25 @@ from torch_cluster.functions.utils.degree import node_degree
...
@@ -4,27 +4,25 @@ from torch_cluster.functions.utils.degree import node_degree
def
test_node_degree_cpu
():
def
test_node_degree_cpu
():
row
=
torch
.
LongTensor
([
0
,
1
,
1
,
0
,
0
,
3
,
0
])
target
=
torch
.
LongTensor
([
0
,
1
,
1
,
0
,
0
,
3
,
0
])
degree
=
node_degree
(
target
,
4
)
expected_degree
=
[
4
,
2
,
0
,
1
]
expected_degree
=
[
4
,
2
,
0
,
1
]
degree
=
node_degree
(
row
,
4
)
assert
degree
.
type
()
==
torch
.
LongTensor
().
type
()
assert
degree
.
type
()
==
torch
.
LongTensor
().
type
()
assert
degree
.
tolist
()
==
expected_degree
assert
degree
.
tolist
()
==
expected_degree
degree
=
node_degree
(
row
,
4
,
out
=
torch
.
FloatTensor
())
degree
=
node_degree
(
target
,
4
,
out
=
torch
.
FloatTensor
())
assert
degree
.
type
()
==
torch
.
FloatTensor
().
type
()
assert
degree
.
type
()
==
torch
.
FloatTensor
().
type
()
assert
degree
.
tolist
()
==
expected_degree
assert
degree
.
tolist
()
==
expected_degree
@
pytest
.
mark
.
skipif
(
not
torch
.
cuda
.
is_available
(),
reason
=
'no CUDA'
)
@
pytest
.
mark
.
skipif
(
not
torch
.
cuda
.
is_available
(),
reason
=
'no CUDA'
)
def
test_node_degree_gpu
():
# pragma: no cover
def
test_node_degree_gpu
():
# pragma: no cover
row
=
torch
.
cuda
.
LongTensor
([
0
,
1
,
1
,
0
,
0
,
3
,
0
])
target
=
torch
.
cuda
.
LongTensor
([
0
,
1
,
1
,
0
,
0
,
3
,
0
])
degree
=
node_degree
(
target
,
4
)
expected_degree
=
[
4
,
2
,
0
,
1
]
expected_degree
=
[
4
,
2
,
0
,
1
]
degree
=
node_degree
(
row
,
4
)
assert
degree
.
type
()
==
torch
.
cuda
.
LongTensor
().
type
()
assert
degree
.
type
()
==
torch
.
cuda
.
LongTensor
().
type
()
assert
degree
.
cpu
().
tolist
()
==
expected_degree
assert
degree
.
cpu
().
tolist
()
==
expected_degree
degree
=
node_degree
(
row
,
4
,
out
=
torch
.
cuda
.
FloatTensor
())
degree
=
node_degree
(
target
,
4
,
out
=
torch
.
cuda
.
FloatTensor
())
assert
degree
.
type
()
==
torch
.
cuda
.
FloatTensor
().
type
()
assert
degree
.
type
()
==
torch
.
cuda
.
FloatTensor
().
type
()
assert
degree
.
cpu
().
tolist
()
==
expected_degree
assert
degree
.
cpu
().
tolist
()
==
expected_degree
torch_cluster/functions/utils/degree.py
View file @
235d586b
import
torch
import
torch
def
node_degree
(
row
,
num_nodes
,
out
=
None
):
def
node_degree
(
target
,
num_nodes
,
out
=
None
):
out
=
row
.
new
(
)
if
out
is
None
else
out
out
=
target
.
new
(
num_nodes
)
if
out
is
None
else
out
zero
=
torch
.
zeros
(
num_nodes
,
out
=
out
)
zero
=
torch
.
zeros
(
num_nodes
,
out
=
out
)
one
=
torch
.
ones
(
row
.
size
(
0
),
out
=
zero
.
new
())
one
=
torch
.
ones
(
target
.
size
(
0
),
out
=
zero
.
new
(
target
.
size
(
0
)
))
return
zero
.
scatter_add_
(
0
,
row
,
one
)
return
zero
.
scatter_add_
(
0
,
target
,
one
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment