def test_Resize(self): ishape = [3] oshape = [5] A = linop.Resize(oshape, ishape) self.check_linop_linear(A) self.check_linop_adjoint(A) self.check_linop_pickleable(A) A = linop.Resize(oshape, ishape, oshift=[1]) self.check_linop_linear(A) self.check_linop_adjoint(A) self.check_linop_pickleable(A) ishape = [5] oshape = [3] A = linop.Resize(oshape, ishape) self.check_linop_linear(A) self.check_linop_adjoint(A) self.check_linop_pickleable(A) A = linop.Resize(oshape, ishape, ishift=[1]) self.check_linop_linear(A) self.check_linop_adjoint(A) self.check_linop_pickleable(A)
def test_to_pytorch_function(self): A = linop.Resize([5], [3]) x = np.array([1, 2, 3], np.float) y = np.ones([5]) with self.subTest('forward'): f = pytorch.to_pytorch_function(A).apply x_torch = pytorch.to_pytorch(x) npt.assert_allclose(f(x_torch).detach().numpy(), A(x)) with self.subTest('adjoint'): y_torch = pytorch.to_pytorch(y) loss = (f(x_torch) - y_torch).pow(2).sum() / 2 loss.backward() npt.assert_allclose(x_torch.grad.detach().numpy(), A.H(A(x) - y))