페이지

2022년 9월 3일 토요일

24.2 matyas 함수

 이어서 matyas 함수를 살펴보죠. 수식으로는 z = 0.26(x ** 2 + y ** 2) - 0.48xy이며, DeZero로는 다음처럼 구현할 수 있습니다.

def matyas(x, y):

    z =  0.26 * ( x ** 2 + y ** 2) - 0.489 * x * y

    return z


x = Variable(np.array(1.0))

y = Variable(np.array(1.0))

z = matyas(x, y)

z.backward()

print(x.grad, y.grad)


variable(0.031000000000000028) variable(0.031000000000000028)

이번에도 수식을 그대로 코드로 옮길 수 있었습니다. 사칙연산 연산자는 자유롭게 사용할 수 있으므로 손쉽게 해결됐습니다. 만약 이 연산자들을 사용할 수 없다면 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 함수라는 복잡한 수식에 도전해 봅시다.


댓글 없음: