我想在 Flux 中使用优化器,如 Julia Academy使用 Flux.jlSGD
进行深度学习的教程中所示。这是他们提供的笔记本,其中使用 SGD 优化器:
opt = SGD(params(model))\n
Run Code Online (Sandbox Code Playgroud)\n\n然而,当我运行 SGD 时,我得到:
\n\nERROR: UndefVarError: SGD not defined\n
Run Code Online (Sandbox Code Playgroud)\n\n这是我运行时的输出?SGD
:
search: SGD AMSGrad Signed signed Unsigned unsigned sigmoid issetgid logsigmoid StringIndexError isassigned significand\n\nCouldn\'t find SGD\nPerhaps you meant SGD, Set, Sys, GC, Some, sec, sin, sum, LSTM, csc, esc, isa, ans, abs, cis, cos, eps, ARGS, Pkg, GRU, RNN, cpu, elu, f32, f64, gpu, \xcf\x83, !, !=, !== or %\n No documentation found.\n\n Binding SGD does not exist.\n
Run Code Online (Sandbox Code Playgroud)\n\n正如您所看到的, “也许您的意思是”行中仍然显示 SGD 。
\n\n当我运行教程中显示的其他优化器(例如 ADAM)时,我没有收到错误。我正在使用 Flux v0.10.0
\n本教程使用过时的Flux
.
在 Flux v0.10.0 版本中,Flux 已弃用使用 ,SGD
而代之以Descent
它只是标准梯度下降算法的更优化版本。
有关优化器的更多信息可以在文档Descent
中找到。
另外,作为旁注,Flux 不再需要传递params(model)
到优化器中,而是在训练时将其作为单独的参数。
# New Way
Flux.train!(loss, params(model), data, optimizer)
Run Code Online (Sandbox Code Playgroud)