Types 如何使用Flux.jl绘制函数及其梯度/导数

Types 如何使用Flux.jl绘制函数及其梯度/导数,types,julia,gradient,flux-machine-learning,Types,Julia,Gradient,Flux Machine Learning,我想用Flux.jl和Plots.jl using Flux.Tracker using Plots f(x::Float64) = 3x^2 + 2x + 1 df(x::Float64) = Tracker.gradient(f, x)[1] d2f(x::Float64) = Tracker.gradient(df, x)[1] plot([f], -2, 2) plot!([df], -2, 2) 我得到: ERROR: LoadError: MethodError: no met

我想用
Flux.jl
Plots.jl

using Flux.Tracker
using Plots

f(x::Float64) = 3x^2 + 2x + 1
df(x::Float64) = Tracker.gradient(f, x)[1]
d2f(x::Float64) = Tracker.gradient(df, x)[1]

plot([f], -2, 2)
plot!([df], -2, 2)
我得到:

ERROR: LoadError: MethodError: no method matching Float64(::Flux.Tracker.TrackedReal{Float64})
Closest candidates are:
  Float64(::Real, ::RoundingMode) where T<:AbstractFloat at rounding.jl:194
  Float64(::T<:Number) where T<:Number at boot.jl:741
  Float64(::Int8) at float.jl:60
错误:LoadError:MethodError:没有与Float64匹配的方法(::Flux.Tracker.TrackedReal{Float64})
最接近的候选人是:
Float64(::Real,::RoundingMode),其中T可以使用以下内容(在通量0.8.3下):


非常感谢您的回答@BogumilKaminski。为了尝试您的答案,我应该更新到我尝试过的Flux 0.8.3,但没有成功(尽管重新安装并更新了软件包),因此在那里发布了另一个问题:
f(x::Float64) = 3x^2 + 2x + 1
df(x::Float64) = Tracker.data(Tracker.gradient(f, x, nest=true)[1])
d2f(x::Float64) = Tracker.data(Tracker.gradient(df, x, nest=true)[1])