24.2_matyas函数
24.2 matyas函数
接下来是matyas函数。它可用式子表示为 。使用DeZero可将函数按以下方式实现。
steps/step24.py
def matyas(x, y):
z = 0.26 * (x ** 2 + y ** 2) - 0.48 * x * y
return z
x = Variable(np.array(1.0))
y = Variable(np.array(1.0))
z = matyas(x, y)
z *= (x.grad, y.grad)运行结果
0.04000000000000036 0.04000000000000036
如上所示,这里也可以直接把式子转写为代码。做到这一点很容易,因为 DeZero 支持四则运算的运算符。我们不妨来看看当这些运算符不可用时 matyas 函数的代码是什么样子的。
def matyas(x, y):
z = sub.mul(0.26, add(pow(x, 2), pow(y, 2))), mul(0.48, mul(x, y)))
return z上面的代码可读性较差,由此我们可以体会到能够使用 和 **等运算符是多么可贵的一件事。使用这些运算符不仅可以减少打字量,还可以用近似于普通式子的写法来读写代码。最后,我们要挑战的是复杂的Goldstein-Price函数。