SciML-Julia的保存和加载模型及训练后最佳体重

SciML-Julia的保存和加载模型及训练后最佳体重,julia,Julia,我试图理解在神经ODE上下文中使用sciml_train对模型进行训练后,我们如何保存模型+其最佳权重 之后: result_neuralode = DiffEqFlux.sciml_train(loss_neuralode, prob_neuralode.p, ADAM(0.05), cb = callback, maxiter

我试图理解在神经ODE上下文中使用
sciml_train
对模型进行训练后,我们如何保存模型+其最佳权重

之后:

result_neuralode = DiffEqFlux.sciml_train(loss_neuralode, prob_neuralode.p,
                                          ADAM(0.05), cb = callback,
                                          maxiters = 100)
我真的不明白我们如何保存模型+最佳重量。我知道通过调用
result\u neuralode.minimizer
可以访问最佳权重。我正在寻找一种与tensorflow.save_model(fn=“mymodel”)等效的方法

我试着用这个:

result_neuralode = DiffEqFlux.sciml_train(loss_neuralode, prob_neuralode.p,
                                          ADAM(0.05), cb = callback,
                                          maxiters = 100)

println("The  best weight is: ")
display(result_neuralode.minimizer)

#Access the weight of the model
weights = params(prob_neuralode)

#save weights to fn: "weight.bson"
using BSON: @save
@save "weight.bson" weights

#load fn to variable called W
using BSON: @load
@load "weight.bson" W

#mounting the loaded weight (W)
Flux.loadparams!(prob_neuralode, W)

#predict using the loaded weight
data = predict_neuralode(W)

#plot the loaded prediction
plot!(
    tsteps,data[1,:],label="Loaded"
)

这给我带来了一个错误:

ERROR: LoadError: UndefVarError: Zygote not defined

我对如何保存模型及其重量感到有点困惑,有时会重新加载以用于实际应用程序。

在加载IIRC之前,必须使用Zygote执行
。但是如果您保存数组
result\u neuralode.u
,那么您就拥有了所有权重,不需要保存任何其他内容来重建系统。

非常感谢Chris!