diff --git a/norch/__pycache__/tensor.cpython-38.pyc b/norch/__pycache__/tensor.cpython-38.pyc index 939d371..72d3beb 100644 Binary files a/norch/__pycache__/tensor.cpython-38.pyc and b/norch/__pycache__/tensor.cpython-38.pyc differ diff --git a/norch/autograd/__pycache__/functions.cpython-38.pyc b/norch/autograd/__pycache__/functions.cpython-38.pyc index 53f8f0f..a7d3c51 100644 Binary files a/norch/autograd/__pycache__/functions.cpython-38.pyc and b/norch/autograd/__pycache__/functions.cpython-38.pyc differ diff --git a/norch/autograd/functions.py b/norch/autograd/functions.py index d0aed64..30e452f 100644 --- a/norch/autograd/functions.py +++ b/norch/autograd/functions.py @@ -15,6 +15,7 @@ class AddBroadcastedBackward: x, y = self.input grad_x = self._reshape_gradient(gradient, x.shape) grad_y = self._reshape_gradient(gradient, y.shape) + return [grad_x, grad_y] def _reshape_gradient(self, gradient, shape): diff --git a/tests/test_autograd.py b/tests/test_autograd.py index 8cd105e..1db0569 100644 --- a/tests/test_autograd.py +++ b/tests/test_autograd.py @@ -80,12 +80,17 @@ class TestTensorAutograd(unittest.TestCase): self.assertTrue(utils.compare_torch(norch_tensor2_grad, torch_tensor2_grad)) ## reversed order broadcasting + norch_tensor1 = norch.Tensor([[[1., 2, 3], [4, 5, 6]]], requires_grad=True).to(self.device) # Shape (1, 2, 3) + norch_tensor2 = norch.Tensor([1.5, -1, 0], requires_grad=True).to(self.device) # Shape (3) norch_result = (norch_tensor2 + norch_tensor1).sum() norch_result.backward() norch_tensor1_grad = utils.to_torch(norch_tensor1.grad).to(self.device) norch_tensor2_grad = utils.to_torch(norch_tensor2.grad).to(self.device) + torch_tensor1 = torch.tensor([[[1., 2, 3], [4, 5, 6]]], requires_grad=True).to(self.device) # Shape (1, 2, 3) + torch_tensor2 = torch.tensor([1.5, -1, 0], requires_grad=True).to(self.device) # Shape (3) + torch_result = (torch_tensor2 + torch_tensor1).sum() torch_result.backward() torch_tensor1_grad = torch_tensor1.grad @@ -137,6 +142,8 @@ class TestTensorAutograd(unittest.TestCase): self.assertTrue(utils.compare_torch(norch_tensor2_grad, torch_tensor2_grad)) # reversed order broadcasting + norch_tensor1 = norch.Tensor([[[1., 2, 3], [4, 5, 6]]], requires_grad=True).to(self.device) # Shape (1, 2, 3) + norch_tensor2 = norch.Tensor([1.5, -1, 0], requires_grad=True).to(self.device) # Shape (3) norch_result = (norch_tensor2 - norch_tensor1).sum() norch_result.backward() @@ -145,6 +152,7 @@ class TestTensorAutograd(unittest.TestCase): torch_tensor1 = torch.tensor([[[1., 2, 3], [4, 5, 6]]], requires_grad=True).to(self.device) # Shape (1, 2, 3) torch_tensor2 = torch.tensor([1.5, -1, 0], requires_grad=True).to(self.device) # Shape (3) + torch_result = (torch_tensor2 - torch_tensor1).sum() torch_result.backward() torch_tensor1_grad = torch_tensor1.grad