25 lines
586 B
Python
Executable File
25 lines
586 B
Python
Executable File
import unittest
|
|
import numpy as np
|
|
from prml import nn
|
|
|
|
|
|
class TestAbs(unittest.TestCase):
|
|
|
|
def test_abs(self):
|
|
np.random.seed(1234)
|
|
x = nn.Parameter(np.random.randn(5, 7))
|
|
sign = np.sign(x.value)
|
|
y = nn.abs(x)
|
|
self.assertTrue((y.value == np.abs(x.value)).all())
|
|
|
|
for _ in range(10000):
|
|
x.cleargrad()
|
|
y = nn.abs(x)
|
|
nn.square(y - 0.01).sum().backward()
|
|
x.value -= x.grad * 0.001
|
|
self.assertTrue(np.allclose(x.value, 0.01 * sign))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|