def test_sin_backward_twice(self):
     x = Variable(np.array(1.0))
     y = F.sin(x)
     y.backward(create_graph=True)
     gx = x.grad
     x.cleargrad()
     gx.backward(create_graph=False)
     result = x.grad.data
     assert np.allclose(result, -0.84147098)
def test_higher_derivative_sin():
    x = Variable(np.array(1))
    y = sin(x)
    y.backward(create_graph=True)

    for i in range(3):
        gx = x.grad
        x.clear_grad()
        gx.backward(create_graph=True)
        LOGGER.debug('{} {}'.format(i, x.grad))

    assert x.grad.data == pytest.approx(0.8414709)
Exemplo n.º 3
0
    def test_sin(self):
        x = Variable(np.linspace(-7, 7, 200))
        y = F.sin(x)
        y.backward(create_graph=True)

        logs = [y.data]

        for i in range(3):
            logs.append(x.grad.data)
            gx = x.grad
            x.cleargrad()
            gx.backward(create_graph=True)

        labels = ["y=sin(x)", "y'", "y''", "y'''"]
        for i, v in enumerate(logs):
            plt.plot(x.data, logs[i], label=labels[i])
        plt.legend(loc='lower right')
        plt.savefig('test.png')
Exemplo n.º 4
0
import numpy as np
import matplotlib.pyplot as plt
from dezero import Variable
import dezero.functions as F

x = Variable(np.linspace(-7, 7, 200))
y = F.sin(x)
y.backward(create_graph=True)

logs = [y.data]

for i in range(3):
    logs.append(x.grad.data)
    gx = x.grad
    x.clear_grad()
    gx.backward(create_graph=True)

# draw graph
labels = ["y=sin(x)", "y'", "y''", "y'''"]
for i, v in enumerate(logs):
    plt.plot(x.data, logs[i], label=labels[i])
plt.legend(loc='lower right')
plt.show()
Exemplo n.º 5
0
 def test_backward(self):
     x = Variable(np.array(np.pi / 4))
     y = sin(x)
     y.backward()
     self.assertAlmostEqual(x.grad.data, 1 / np.sqrt(2))
Exemplo n.º 6
0
 def test_forward(self):
     x = Variable(np.array(np.pi / 4))
     y = sin(x)
     self.assertAlmostEqual(y.data, 1/np.sqrt(2))
 def test_sin_backward_once(self):
     x = Variable(np.array(np.pi / 4))
     y = F.sin(x)
     y.backward()
     result = x.grad.data
     assert np.allclose(result, 0.70710678)
 def test_sin_forward(self):
     x = Variable(np.array(np.pi / 4))
     y = F.sin(x)
     assert np.allclose(y.data, 0.7071)
Exemplo n.º 9
0
 def test_sin(self):
     x = Variable(np.array(2.0))
     y = sin(x)
     y.backward()
     self.assertEqual(y.data, np.sin(x.data))
     self.assertEqual(x.grad.data, np.cos(x.data))
import numpy as np
import matplotlib.pyplot as plt
from dezero import Variable
import dezero.functions as f

if __name__ == '__main__':

    x = Variable(np.linspace(-7, 7, 200))
    y = f.sin(x)
    y.backward(create_graph=True)

    logs = [y.data.flatten()]

    for i in range(3):
        logs.append(x.grad.data.flatten())
        gx = x.grad
        x.clear_grad()
        gx.backward(create_graph=True)

    labels = ["y=sin(x", "y'", "y''", "y'''"]
    for i, v in enumerate(logs):
        plt.plot(x.data, logs[i], label=labels[i])
    plt.legend(loc='lower right')
    plt.show()