Как заменить использование атрибутов python в Юлии - PullRequest
2 голосов
/ 07 апреля 2020

У меня есть несколько функций в Python форме fast.ai курс:

def mse_grad(inp, targ): 
    # grad of loss with respect to output of previous layer
    inp.g = 2. * (inp.squeeze() - targ).unsqueeze(-1) / inp.shape[0]

def lin_grad(inp, out, w, b):
    # grad of matmul with respect to input
    inp.g = out.g @ w.t()
    w.g = (inp.unsqueeze(-1) * out.g.unsqueeze(1)).sum(0)
    b.g = out.g.sum(0)

def forward_and_backward(inp, targ):
    # backward pass:
    mse_grad(out, targ)
    lin_grad(l2, out, w2, b2)

Используются атрибуты python. Как заменить эти inp.g и out.g в Julia, чтобы я мог использовать эти функции в функции forward_and_backward, чтобы они имели доступ друг к другу градиентами?

1 Ответ

1 голос
/ 07 апреля 2020

Просто определите свои собственные структуры с 'g' как поле. См. Учебники https://docs.julialang.org/en/v1/manual/types/#Composite -Типы-1

или

Julia 1.0 - Структуры и изменяемые структуры (типы)

...