Repository navigation
GeometricMachineLearning v0.8.0
This release closes a whole-package audit and finishes handing the traversal of a parameter set to
the packages that own the parameters. It deletes far more than it adds. The full record is in
CHANGELOG.md under [0.8.0].
Breaking Changes
- Nine of the twelve type piracies are deleted, and three of them were on
Base.
+(::Float64, ::Tuple{Float64}),+(::Vector{Float64}, ::Tuple{Float64})andisapproxon a
(q, p)NamedTupleno longer change every Julia process that loads this package; the second
was wrong on its own terms, returning a scalar and discarding every element but the first. The
other six are theadd!family onGeometricOptimizers' structured matrix types, which had no
caller here. Aqua'spiraciescount goes from 12 to 3. A caller who wants the old≈writes
a.q ≈ b.q && a.p ≈ b.p; foradd!, reachGeometricOptimizers, which defines the identical
set against its own generic. PoissonTensor'sBase.:*andBase.getindexno longer claim every argument type. The
three array methods of*takeStridedVector,StridedMatrixandStridedArray{T, 3}. A
non-strided CPU matrix still gives the same answer through Julia's generic multiply, but loses
the fast path; a non-strided 3-tensor is now aMethodError.- Thirty-two names under
src/had no user anywhere and are gone, and with themlegacy/,
src/backends/and the wholetrain!subsystem.apply_toNTwasBase.mapand is deleted;
_eltypeis replaced byNeuralNetworkParameters.parameter_eltype;_addandadd!leave the
export list. Seven exported names that were defined nowhere —Device,CPUDevice,
convert_to_dev,ResidualLayer,LinearSymplecticLayerP,LinearSymplecticLayerQand
timestep— are no longer exported. SymplecticAttentionQ(M)andSymplecticAttentionP(M)default tosymmetric = true. They
defaulted tofalsewhile their docstrings saidtrue. The keyword is now typed::Bool.VolumePreservingLowerLayerandVolumePreservingUpperLayerapplied to a vector return a
vector, not ann × 1matrix. A caller who needs the old shape writesreshape(y, :, 1).
Bug Fixes
MatrixSoftmaxno longer overflows toNaNon ordinary input.- A
Float32network staysFloat32through training,_normand the optimizer cache. - The advertised GPU support works on a real device. Five architectures threw at construction, and
PoissonTensortimes a wrapped GPU array now has a path that does not scalar-index. - The four training losses' three-argument functor was a run-time ambiguity against
AbstractNeuralNetworks'(::NetworkLoss)(::NeuralNetwork, input, output)rather than a call. - Four
DataLoaderconstructors returnednothingon an unexpected keyword, and
HRedSys.timespantruncated toInt. - Building the minibatch index set is linear again, and its return type is concrete.
New Features
PositionalEncoding, the sinusoidal encoding of Vaswani et al., as a documented, tested layer.LagrangianNeuralNetworkis trainable throughDataLoader+Batch+Optimizer.SymplecticEulerLossandVariationalMidpointLoss.- A
GPUArraysCorepackage extension forPoissonTensor.
Dependencies
GeometricOptimizers = "0.8"(was"0.7"). 0.8 deletesassign_columns, so the three
manifold layers draw their initial weight throughorthonormal_columnsrather than a host
qr!— which is what lets them construct on a device.
Merged pull requests:
- Normalise all sources to Unicode NFC (#259) (@michakraus)
- Check every slice in the inverse pullback tests (#260) (@michakraus)
- Regenerate the inverse kernels with CSE: 25.5 MB to 27 KB (#261) (@michakraus)
- Include the tensor-inverse tests once, not twice (#262) (@michakraus)
- Test the Float32 path of the tensor Cayley kernels (#263) (@michakraus)
- Call default_parameters() in scripts/ (#264) (@michakraus)
- Ignore the .h5 files generated by the scripts (#265) (@michakraus)
- Add test/exports.jl export guard (#266) (@michakraus)
- Delete scripts/loss/, a dead symbolic experiment (#267) (@michakraus)
- Fix undefined names in reproduction scripts (#268) (@michakraus)
- Guard every test file against being unreachable (#269) (@michakraus)
- Delete the GPU and hardware test orphans (#270) (@michakraus)
- Delete nine dead test orphans (#271) (@michakraus)
- Delete six broken research scripts, and port plots.jl onto DataLoader/NeuralNetwork (#272) (@michakraus)
- Convert two verification scripts into tests (#273) (@michakraus)
- Correct the gradient structure rule from #273 and share its assertion helper (#274) (@michakraus)
- Wire in two surviving test orphans (#275) (@michakraus)
- Check the upscaling chain's symplecticity claim (#276) (@michakraus)
- Bring CHANGELOG Open Issues up to date (#277) (@michakraus)
- Retire the train! subsystem, porting its content first (#278) (@michakraus)
- Restructure test/ by subject, add test/Project.toml (#279) (@michakraus)
- Gate scripts/ in CI and restructure it in three (#280) (@michakraus)
- Write the HNN tutorial's phase space section (#281) (@michakraus)
- Close the defects the scripts gate found (#282) (@michakraus)
- Make the documentation build green, and vectorise the logo (#283) (@michakraus)
- Give the package an Aqua baseline (#284) (@michakraus)
- Retire the legacy HNN tree, and keep what it had that the package did not (#285) (@michakraus)
- Remove src/backends/: Lux is not an operational backend (#286) (@michakraus)
- Give lnn_pendulum.jl a smoke size that costs less (#287) (@michakraus)
- Bound Aqua below 0.8.17 in the test environment (#288) (@michakraus)
- Cover sequence length 5 in the volume-preserving attention tests (#289) (@michakraus)
- Drop seven superseded files from legacy/ (#290) (@michakraus)
- Move the symplectic groundwork to GeometricOptimizers (#291) (@michakraus)
- Fix five audit findings: NaN softmax, four ambiguous loss functors, a silent nothing from DataLoader, and HRedSys.timespan (#292) (@michakraus)
- Add a positional encoding layer, and end legacy/ (#294) (@michakraus)
- Keep a Float32 network Float32: training history, _norm, PoissonTensor defaults, the optimizer step size and two parameterlength counts (#295) (@michakraus)
- Make PositionalEncoding trainable, and stop the keyword changing which inputs a Transformer takes (#296) (@michakraus)
- Audit Part C: allocations, inference and the minibatch copies (#297) (@michakraus)
- Lift the Aqua bound in the test environment (#298) (@michakraus)
- Remove the dead code under src/, and gate the imports against their return (#299) (@michakraus)
- Close the audit's piracy and ambiguity findings (Part D) (#300) (@michakraus)
- Documentation, comments and naming: audit Part F (#301) (@michakraus)
- Fix three docstring bullet typos the audit sweep missed (#302) (@michakraus)
- Say what the GPU path actually does, and record the two things it does not (#303) (@michakraus)
- Require GeometricOptimizers 0.8, closing B12 and B13 (#304) (@michakraus)
- Say which seed the reduced-system measurement covers (#305) (@michakraus)