5

我想在 Flux 中使用优化器,如使用 Flux.jlSGD进行深度学习的 Julia Academy 教程中所示。是他们提供的使用 SGD 优化器的笔记本:

opt = SGD(params(model))

但是,当我运行 SGD 时,我得到:

ERROR: UndefVarError: SGD not defined

这是我运行时的输出?SGD

search: SGD AMSGrad Signed signed Unsigned unsigned sigmoid issetgid logsigmoid StringIndexError isassigned significand

Couldn't find SGD
Perhaps 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, σ, !, !=, !== or %
  No documentation found.

  Binding SGD does not exist.

如您所见,它仍在“也许您的意思”行中显示 SGD。

当我运行本教程中也显示的其他优化器(例如 ADAM)时,我没有收到错误消息。我正在使用 Flux v0.10.0

4

1 回答 1

5

本教程使用过时版本的Flux.

在 Flux v0.10.0 版本中,Flux 已弃用SGD,取而代之的Descent是标准梯度下降算法的更优化版本。

更多关于Descent优化器的信息可以在文档中找到。

另外作为旁注,Flux 不再需要传递params(model)给优化器,而是在训练时将其作为单独的参数。

# New Way
Flux.train!(loss, params(model), data, optimizer)
于 2020-01-20T05:32:31.790 回答