IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

96 satır
2.8KB

  1. from icosagon.normalize import add_eye_sparse, \
  2. norm_adj_mat_one_node_type_sparse, \
  3. norm_adj_mat_one_node_type_dense, \
  4. norm_adj_mat_one_node_type
  5. import decagon_pytorch.normalize
  6. import torch
  7. import pytest
  8. import numpy as np
  9. def test_add_eye_sparse_01():
  10. adj_mat_dense = torch.rand((10, 10))
  11. adj_mat_sparse = adj_mat_dense.to_sparse()
  12. adj_mat_dense += torch.eye(10)
  13. adj_mat_sparse = add_eye_sparse(adj_mat_sparse)
  14. assert torch.all(adj_mat_sparse.to_dense() == adj_mat_dense)
  15. def test_add_eye_sparse_02():
  16. adj_mat_dense = torch.rand((10, 20))
  17. adj_mat_sparse = adj_mat_dense.to_sparse()
  18. with pytest.raises(ValueError):
  19. _ = add_eye_sparse(adj_mat_sparse)
  20. def test_add_eye_sparse_03():
  21. adj_mat_dense = torch.rand((10, 10))
  22. with pytest.raises(ValueError):
  23. _ = add_eye_sparse(adj_mat_dense)
  24. def test_add_eye_sparse_04():
  25. adj_mat_dense = np.random.rand(10, 10)
  26. with pytest.raises(ValueError):
  27. _ = add_eye_sparse(adj_mat_dense)
  28. def test_norm_adj_mat_one_node_type_sparse_01():
  29. adj_mat = torch.rand((10, 10))
  30. adj_mat = (adj_mat > .5)
  31. adj_mat = adj_mat.to_sparse()
  32. _ = norm_adj_mat_one_node_type_sparse(adj_mat)
  33. def test_norm_adj_mat_one_node_type_sparse_02():
  34. adj_mat_dense = torch.rand((10, 10))
  35. adj_mat_dense = (adj_mat_dense > .5)
  36. adj_mat_sparse = adj_mat_dense.to_sparse()
  37. adj_mat_sparse = norm_adj_mat_one_node_type_sparse(adj_mat_sparse)
  38. adj_mat_dense = norm_adj_mat_one_node_type_dense(adj_mat_dense)
  39. assert torch.all(adj_mat_sparse.to_dense() == adj_mat_dense)
  40. def test_norm_adj_mat_one_node_type_dense_01():
  41. adj_mat = torch.rand((10, 10))
  42. adj_mat = (adj_mat > .5)
  43. _ = norm_adj_mat_one_node_type_dense(adj_mat)
  44. def test_norm_adj_mat_one_node_type_dense_02():
  45. adj_mat = torch.tensor([
  46. [0, 1, 1, 0], # 3
  47. [1, 0, 1, 0], # 3
  48. [1, 1, 0, 1], # 4
  49. [0, 0, 1, 0] # 2
  50. ])
  51. expect = np.array([
  52. [1/3, 1/3, 1/3, 0],
  53. [1/3, 1/3, 1/3, 0],
  54. [1/4, 1/4, 1/4, 1/4],
  55. [0, 0, 1/2, 1/2]
  56. ], dtype=np.float32)
  57. res = decagon_pytorch.normalize.norm_adj_mat_one_node_type(adj_mat)
  58. res = res.todense().astype(np.float32)
  59. print('res:', res)
  60. print('expect:', expect)
  61. assert torch.all(res == expect)
  62. @pytest.mark.skip
  63. def test_norm_adj_mat_one_node_type_dense_03():
  64. adj_mat = torch.rand((10, 10))
  65. adj_mat = (adj_mat > .5)
  66. adj_mat_dec = decagon_pytorch.normalize.norm_adj_mat_one_node_type(adj_mat)
  67. adj_mat_ico = norm_adj_mat_one_node_type_dense(adj_mat)
  68. adj_mat_dec = adj_mat_dec.todense()
  69. adj_mat_ico = adj_mat_ico.detach().cpu().numpy()
  70. print('adj_mat_dec:', adj_mat_dec)
  71. print('adj_mat_ico:', adj_mat_ico)
  72. assert np.all(adj_mat_dec == adj_mat_ico)