def test_batch_left_interp_on_a_batch_matrix(): batch_matrix = torch.randn(2, 6, 3) res = left_interp(batch_interp_indices, batch_interp_values, Variable(batch_matrix)).data actual = torch.matmul(batch_interp_matrix, batch_matrix) assert approx_equal(res, actual)
def test_batch_left_interp_on_a_vector(): vector = torch.randn(6) actual = torch.matmul(batch_interp_matrix, vector.unsqueeze(-1).unsqueeze(0)).squeeze(0) res = left_interp(batch_interp_indices, batch_interp_values, Variable(vector)).data assert approx_equal(res, actual)
def test_left_interp_on_a_vector(self): vector = torch.randn(6) res = left_interp( self.interp_indices, self.interp_values, Variable(vector) ).data actual = torch.matmul(self.interp_matrix, vector) self.assertTrue(approx_equal(res, actual))
def test_batch_left_interp_on_a_batch_matrix(self): batch_matrix = torch.randn(2, 6, 3) res = left_interp( self.batch_interp_indices, self.batch_interp_values, Variable(batch_matrix) ).data actual = torch.matmul(self.batch_interp_matrix, batch_matrix) self.assertTrue(approx_equal(res, actual))
def test_left_interp_on_a_matrix(self): matrix = torch.randn(6, 3) res = left_interp( self.interp_indices, self.interp_values, Variable(matrix), ).data actual = torch.matmul(self.interp_matrix, matrix) self.assertTrue(approx_equal(res, actual))
def test_batch_left_interp_on_a_vector(self): vector = torch.randn(6) actual = torch.matmul(self.batch_interp_matrix, vector.unsqueeze(-1).unsqueeze(0)).squeeze(0) res = left_interp( self.batch_interp_indices, self.batch_interp_values, Variable(vector), ).data self.assertTrue(approx_equal(res, actual))
def test_interpolation(self): x = torch.linspace(0.01, 1, 100).unsqueeze(1) grid = torch.linspace(-0.05, 1.05, 50).unsqueeze(0) indices, values = Interpolation().interpolate(Variable(grid), Variable(x)) indices = indices.squeeze_(0) values = values.squeeze_(0) test_func_grid = grid.squeeze(0).pow(2) test_func_x = x.pow(2).squeeze(-1) interp_func_x = utils.left_interp(indices.data, values.data, test_func_grid.unsqueeze(1)).squeeze() self.assertTrue(utils.approx_equal(interp_func_x, test_func_x))
def test_interpolation(): x = torch.linspace(0.01, 1, 100).unsqueeze(1) grid = torch.linspace(-0.05, 1.05, 50).unsqueeze(0) indices, values = Interpolation().interpolate(grid, x) indices.squeeze_(0) values.squeeze_(0) test_func_grid = grid.squeeze(0).pow(2) test_func_x = x.pow(2).squeeze(-1) interp_func_x = utils.left_interp(indices, values, test_func_grid.unsqueeze(1)).squeeze() assert utils.approx_equal(interp_func_x, test_func_x)
def test_left_interp_on_a_matrix(): matrix = torch.randn(6, 3) res = left_interp(interp_indices, interp_values, Variable(matrix)).data actual = torch.matmul(interp_matrix, matrix) assert approx_equal(res, actual)
def test_left_interp_on_a_vector(): vector = torch.randn(6) res = left_interp(interp_indices, interp_values, Variable(vector)).data actual = torch.matmul(interp_matrix, vector) assert approx_equal(res, actual)