So you concede that the new version of Flux is not backwards compatible?
Correct, it’s not secret.
It isn’t backwards compatible.
Otherwise it would be 0.9.1.
That’s how Julia style SemVer version numbers work.
That means months of struggling to learn Flux have been wasted because the code I finally (just about) got going no longer works with the new version??
Not wasted no.
Almost all the skills you have learned will still carry over.
Almost the whole user facing interface is the same.
A few changes to functions like testmode
.
You can find the full-list of changes in
Is that how Flux expects to get more users(?!!)
No? Why would you think that Flux expects to get more users from a breaking change? That’s an odd expectation.
In the longer term these changes were nessecary to continue as advancing the framework to live up to its full potential and to allow users to continue to push out on the frontiers of differentiable programming, ML (especially Scientific ML).
It’s much more flexible now than before.
These changes for example have made DiffEqFlux.jl basically just work – the slightly hacky boilerplate is completely gone.
Is there anywhere that explains how programming Flux has changed with the new version?
The list I posted above in the release notes is a good place to look.
But really not much user facing has changed.
The big thrust of this release was to switch to a new AD package: Zygote.
Which is what gives the increase in flexibility and power.
However, as always with big internal overhauls like this there is a chance of bugs. (Really an inevitability in a change this big).
You have run into one such bug.
I tried my script side-by-side on another of my machines (with the previous version of Flux) and it ran just fine,
Correct, this is as expected. It should work on a machine running an older version of Flux.
That’s what using versions does.
When a new version breaks something one has the ability to go back to the old version.
The fantastic innovation of versioned releases.
It’s really useful, right?
but with the new version it falls over in a way that I wouldn’t have a clue how to fix.
Not a problem, just ask for help.
Either here, or on the Julia Slack, or on StackOverflow.
In this case, I can help you now.
You have ran into a bug.
You should open an issue at Issues · FluxML/Zygote.jl · GitHub
You should pin your version of Flux to v0.9 until it is fixed.
The same with saving models. Is there to be no enduring way to save a model?
Really!??
In the case of this release,
It is likely possible to loaded up models saved on the older version.
This of course isn’t always going to be possible, since nonbackawards compatible changes are not backwards compatible.
But in this case it should be.
Especially if you save it using the weights only procedure, that removes tracking.
Key change in Flux 0.10 was to remove the need for tracking.
(That’s data.params(model)
)
https://fluxml.ai/Flux.jl/stable/saving/#Saving-Model-Weights-1
Best is to load up you model in Flux 0.9,
Then save the weights without tracking.
Then you should be able to load them up in Flux 0.10 per the readme (best to wait til your bug is fixed first).