我正在尝试使用 ForwardDiff.jl 和/或 ReverseDiff.jl 库来计算优化问题中的梯度。
这两个包都给我一个与 ::getfield() 相关的错误消息。
ReverseDiff 给了我一个 LoadError:
MethodError: no method matching (::getfield(CalibrationModule, Symbol("#f#4"))
{AlgorithmParameters,ModelParameters,Guess,Array{Float64,1}})
(::ReverseDiff.TrackedArray{Float64,Float64,1,Array{Float64,1},Array{Float64,1}})
ForwardDiff 给了我一个 LoadError:
MethodError: no method matching (::getfield(CalibrationModule, Symbol("#f#10"))
{AlgorithmParameters,ModelParameters,Guess,Array{Float64,1}})
(::Array{ForwardDiff.Dual{ForwardDiff.Tag{getfield(CalibrationModule,
Symbol("#f#10"))
{AlgorithmParameters,ModelParameters,Guess,Array{Float64,1}},Float64},Float64,6},1})
我不知道如何理解这个错误信息。我的代码太复杂,无法在这里发布,但据我所知,我没有使用任何不是用 Julia 编写的库。我确实在整个过程中广泛使用自定义数据类型(可变结构),但我不明白为什么这会导致问题......