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