def test_differentiate_compound_multiply(self): self.assertEqual( differentiate(multiply('x', multiply(3, 'y')), { 'x': 2, 'y': 1 }), 3) self.assertEqual( differentiate(multiply(3, multiply('x', multiply('x', 'x'))), {'x': 2}), 36)
def test_evaluate_compound_multiply(self): self.assertEqual( evaluate(multiply('x', multiply(3, 'y')), { 'x': 2, 'y': 1 }), 6) self.assertEqual( evaluate(multiply(3, multiply('x', multiply('x', 'x'))), {'x': 2}), 24)
def test_differentiate_simple_multiply(self): self.assertEqual(differentiate(multiply(3, 3), {}), 0) self.assertEqual(differentiate(multiply(3, 'x'), {'x': 2, 'y': 5}), 3) self.assertEqual(differentiate(multiply('x', 'y'), { 'x': 2, 'y': 5 }), 5) self.assertEqual(differentiate(multiply('x', 'x'), { 'x': 2, 'y': 5 }), 4)
def test_multiply_var_diff(self): x = multiply(3, 'x') self.assertEqual(3, x.in1) self.assertEqual('x', x.in2) self.assertEqual(x.diff({'x': 2}), 3) self.assertEqual(0, x.local_grad1) self.assertEqual(1, x.local_grad2)
def test_multiply_var_evaluate(self): x = multiply(3, 'x') self.assertEqual(3, x.in1) self.assertEqual('x', x.in2) self.assertEqual(x.evaluate({'x': 2}), 6) self.assertEqual(3, x.in1) self.assertEqual(2, x.in2)
def test_multiply_const_diff(self): x = multiply(3, 4) self.assertEqual(3, x.in1) self.assertEqual(4, x.in2) self.assertEqual(x.diff({}), 0) self.assertEqual(0, x.local_grad1) self.assertEqual(0, x.local_grad2)
def test_multiply_const_evaluate(self): x = multiply(3, 4) self.assertIsInstance(x, multiply) self.assertEqual(3, x.in1) self.assertEqual(4, x.in2) self.assertEqual(x.evaluate({}), 12) self.assertEqual(3, x.in1) self.assertEqual(4, x.in2)
def test_differentiate_compount_ops(self): self.assertEqual( differentiate(add(3, multiply('x', 'x')), { 'x': 2, 'y': 5 }), 4) self.assertEqual( differentiate( add(3, add(multiply(2, 'x'), multiply('x', multiply('x', 'x')))), {'x': 2}), 14) self.assertEqual( differentiate( add( 3, add(multiply(2, multiply('x', 'x')), multiply(4, multiply('x', multiply('x', 'x'))))), {'x': 2}), 56)
def test_evaluate_compound_ops(self): self.assertEqual( evaluate(add(3, multiply('x', 'x')), { 'x': 2, 'y': 5 }), 7) self.assertEqual( evaluate( add(3, add(multiply(2, 'x'), multiply('x', multiply('x', 'x')))), {'x': 2}), 15) self.assertEqual( evaluate( add( 3, add(multiply(2, multiply('x', 'x')), multiply(4, multiply('x', multiply('x', 'x'))))), {'x': 2}), 43)
def loss_func(self, feed_dict={}): diff = ad.subtract(ad.Placeholder(feed_dict['predicted_y']), ad.Placeholder(feed_dict['true_y'])) return ad.multiply(ad.power(diff, ad.Constant(2)), ad.Constant(1 / 2))
def test_evaluate_simple_multiply(self): self.assertEqual(evaluate(multiply(3, 3), {}), 9) self.assertEqual(evaluate(multiply(3, 'x'), {'x': 2, 'y': 5}), 6) self.assertEqual(evaluate(multiply('x', 'y'), {'x': 2, 'y': 5}), 10) self.assertEqual(evaluate(multiply('x', 'x'), {'x': 2, 'y': 5}), 4)
def test4(x): return ad.multiply(ad.power(ad.Variable(x), ad.Constant(2)), ad.Constant(1 / 2))
def test2(x, y, z): return ad.multiply(ad.add(ad.Variable(x), ad.Variable(y)), ad.maximum(ad.Variable(y), ad.Variable(z)))
def test(x, y, z, w): return ad.multiply( ad.add(ad.multiply(ad.Variable(x), ad.Variable(y)), ad.maximum(ad.Variable(z), ad.Variable(w))), ad.Constant(2))