Files
2026-07-13 13:30:25 +08:00

27 lines
720 B
Python
Executable File

import unittest
import numpy as np
from prml import nn
class TestCauchy(unittest.TestCase):
def test_cauchy(self):
np.random.seed(1234)
obs = np.random.standard_cauchy(size=10000)
obs = 2 * obs + 1
loc = nn.Parameter(0)
s = nn.Parameter(1)
for _ in range(100):
loc.cleargrad()
s.cleargrad()
x = nn.random.Cauchy(loc, nn.softplus(s), data=obs)
x.log_pdf().sum().backward()
loc.value += loc.grad * 0.001
s.value += s.grad * 0.001
self.assertAlmostEqual(x.loc.value, 1, places=1)
self.assertAlmostEqual(x.scale.value, 2, places=1)
if __name__ == '__main__':
unittest.main()