1

我有一个神经网络,它是一个函数 f:(t, v) -> (x,z)。我可以计算 autograd 偏导 df/dt 吗?我想在我的损失函数的正则化项中使用 autograd 计算。

yhat = net((t,v))
#calculate current value of df/dt here
penalized_loss(yhat, y) = loss(yhat, y) + penalty(df/dt)

我想做类似的事情

df/dt = gradient(net,t)

但我不知道如何告诉梯度函数输入(t)是什么

4

2 回答 2

0

根据文档,您可以使用gradient这种方式:

function my_custom_train!(loss, ps, data, opt)
  ps = Params(ps)
  for d in data
    gs = gradient(ps) do
      loss(d...)
    end
    update!(opt, ps, gs)
  end
end

gradient(ps) do ... end是朱利安的成语:

gradient(loss(d...), ps);

gradient来自Zygote.jl ,您可以在此处阅读更多信息。

于 2021-04-21T19:20:07.163 回答
0

如果它是前馈神经网络,您可以使用BetaML并特别复制getGradient函数(“步骤 1”和“步骤 2”)来检索反向堆栈到输入。

于 2021-04-21T21:52:35.170 回答