From 4d9809c1765e972645017b03bd52c16b1e0bcdf4 Mon Sep 17 00:00:00 2001 From: Stanislaw Adaszewski Date: Mon, 11 May 2020 08:21:04 +0200 Subject: [PATCH] Added test for droput_sparse --- .../decagon_pytorch}/__init__.py | 0 .../decagon_pytorch}/convolve.py | 0 .../decagon_pytorch}/dropout.py | 0 .../decagon_pytorch}/model.py | 0 .../decagon_pytorch}/weights.py | 0 tests/decagon_pytorch/test_dropout.py | 34 +++++++++++++++++++ 6 files changed, 34 insertions(+) rename {decagon_pytorch => src/decagon_pytorch}/__init__.py (100%) rename {decagon_pytorch => src/decagon_pytorch}/convolve.py (100%) mode change 100755 => 100644 rename {decagon_pytorch => src/decagon_pytorch}/dropout.py (100%) rename {decagon_pytorch => src/decagon_pytorch}/model.py (100%) rename {decagon_pytorch => src/decagon_pytorch}/weights.py (100%) create mode 100644 tests/decagon_pytorch/test_dropout.py diff --git a/decagon_pytorch/__init__.py b/src/decagon_pytorch/__init__.py similarity index 100% rename from decagon_pytorch/__init__.py rename to src/decagon_pytorch/__init__.py diff --git a/decagon_pytorch/convolve.py b/src/decagon_pytorch/convolve.py old mode 100755 new mode 100644 similarity index 100% rename from decagon_pytorch/convolve.py rename to src/decagon_pytorch/convolve.py diff --git a/decagon_pytorch/dropout.py b/src/decagon_pytorch/dropout.py similarity index 100% rename from decagon_pytorch/dropout.py rename to src/decagon_pytorch/dropout.py diff --git a/decagon_pytorch/model.py b/src/decagon_pytorch/model.py similarity index 100% rename from decagon_pytorch/model.py rename to src/decagon_pytorch/model.py diff --git a/decagon_pytorch/weights.py b/src/decagon_pytorch/weights.py similarity index 100% rename from decagon_pytorch/weights.py rename to src/decagon_pytorch/weights.py diff --git a/tests/decagon_pytorch/test_dropout.py b/tests/decagon_pytorch/test_dropout.py new file mode 100644 index 0000000..60366ec --- /dev/null +++ b/tests/decagon_pytorch/test_dropout.py @@ -0,0 +1,34 @@ +from decagon_pytorch.dropout import dropout_sparse +import torch +import numpy as np + + +def dropout_dense(a, keep_prob): + i = np.array(np.where(a)) + v = a[i[0, :], i[1, :]] + + # torch.random.manual_seed(0) + n = keep_prob + torch.rand(len(v)) + n = torch.floor(n).to(torch.bool) + i = i[:, n] + v = v[n] + x = torch.sparse_coo_tensor(i, v, size=a.shape) + + return x * (1./keep_prob) + + +def test_dropout_sparse(): + for i in range(11): + torch.random.manual_seed(i) + a = torch.rand((5, 10)) + a[a < .5] = 0 + + keep_prob=i/10. + np.finfo(np.float32).eps + + torch.random.manual_seed(i) + b = dropout_dense(a, keep_prob=keep_prob) + + torch.random.manual_seed(i) + c = dropout_sparse(a.to_sparse(), keep_prob=keep_prob) + + assert np.all(np.array(b.to_dense()) == np.array(c.to_dense()))