def test_LinearNoBatch(self): norm = Normal(0., 1.) linear = AffineProcess((f, g), (1., 1.), norm, norm) # ===== Initialize ===== # x = linear.i_sample() # ===== Propagate ===== # num = 100 samps = [x] for t in range(num): samps.append(linear.propagate(samps[-1])) samps = torch.stack(samps) self.assertEqual(samps.size(), torch.Size([num + 1])) # ===== Sample path ===== # path = linear.sample_path(num + 1) self.assertEqual(samps.shape, path.shape)
def test_BatchedParameter(self): norm = Normal(0., 1.) shape = 1000, 100 a = torch.ones((shape[0], 1)) init = Normal(a, 1.) linear = AffineProcess((f, g), (a, 1.), init, norm) # ===== Initialize ===== # x = linear.i_sample(shape) # ===== Propagate ===== # num = 100 samps = [x] for t in range(num): samps.append(linear.propagate(samps[-1])) samps = torch.stack(samps) self.assertEqual(samps.size(), torch.Size([num + 1, *shape])) # ===== Sample path ===== # path = linear.sample_path(num + 1, shape) self.assertEqual(samps.shape, path.shape)