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

34 lines
788 B
Python
Executable File

import unittest
import numpy as np
from prml import nn
class TestTrace(unittest.TestCase):
def test_trace(self):
arrays = [
np.random.normal(size=(2, 2)),
np.random.normal(size=(3, 4))
]
for arr in arrays:
arr = nn.Parameter(arr)
tr_arr = nn.linalg.trace(arr)
self.assertEqual(tr_arr.value, np.trace(arr.value))
a = np.array([
[1.5, 0],
[-0.1, 1.1]
])
a = nn.Parameter(a)
for _ in range(100):
a.cleargrad()
loss = nn.square(nn.linalg.trace(a) - 2)
loss.backward()
a.value -= 0.1 * a.grad
self.assertEqual(nn.linalg.trace(a).value, 2)
if __name__ == '__main__':
unittest.main()