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)
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')
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()
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))
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)
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()