You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flux中setup未定义错误:求优化器新定义方式及版本变更

Flux优化器定义问题解答

问题背景

使用环境:Julia v1.9.0、Flux v0.12.10

运行代码:

hparams = HyperParams()

gen = generator()
enc = encoder()
dec = decoder()

gen_opt = Flux.setup(Flux.Adam(hparams.lr_gen), gen)
enc_opt = Flux.setup(Flux.Adam(hparams.lr_enc), enc)
dec_opt = Flux.setup(Flux.Adam(hparams.lr_dec), dec)

losses_gen = []
losses_dscr = []
train_steps = 0
# Training loop
gen_ps = Flux.params(gen)
enc_ps = Flux.params(enc)
dec_ps = Flux.params(dec)
...

报错信息:

ERROR: UndefVarError: `setup` not defined
Stacktrace:
 [1] getproperty(xWARNING: both Losses and NNlib export "ctc_loss"; uses of it in module Flux must be qualified
::Module, f::Symbol)
   @ Base ./Base.jl:31
 [2] top-level scope
   @ ~/github/AdaptativeBlockLearning/examples/MMD_GAN/mmd_gan_1d.jl:65

问题:Flux中定义优化器的新方式是什么,该变更出现在哪个版本?


问题原因与解决方案

原因

Flux.setup是Flux v0.13.0及以后版本引入的全新优化器配置API,你当前使用的v0.12.10属于旧版本,尚未包含这个函数,因此触发UndefVarError。

两种处理方式

1. 继续使用Flux v0.12.10(旧版本)

旧版本无需setup函数,直接初始化优化器实例即可,配合Flux.train!或Flux.update!完成参数更新:

# 旧版本优化器定义写法
gen_opt = Flux.Adam(hparams.lr_gen)
enc_opt = Flux.Adam(hparams.lr_enc)
dec_opt = Flux.Adam(hparams.lr_dec)

# 训练时示例(用Flux.train!)
Flux.train!(your_loss_function, gen_ps, training_data, gen_opt)

你代码中用Flux.params(model)获取参数的方式在旧版本中是完全正确的,可继续使用。

2. 升级到Flux v0.13.0+(新版本)

新版本的标准流程就是使用Flux.setup创建绑定了模型参数的优化器状态,再通过Flux.update!完成参数更新,无需手动调用Flux.params:

# 新版本优化器定义写法
gen_opt = Flux.setup(Flux.Adam(hparams.lr_gen), gen)
enc_opt = Flux.setup(Flux.Adam(hparams.lr_enc), enc)
dec_opt = Flux.setup(Flux.Adam(hparams.lr_dec), dec)

# 训练时参数更新示例
grads = Flux.gradient(() -> your_loss_function(gen, enc, dec), Flux.params(gen, enc, dec))
Flux.update!(gen_opt, gen, grads[gen])
Flux.update!(enc_opt, enc, grads[enc])
Flux.update!(dec_opt, dec, grads[dec])

新版本中Flux.params仍可使用,但推荐直接传递模型给update!,代码更简洁直观。


内容的提问来源于stack exchange,提问作者Jose Manuel de Frutos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:07:23