backprop v0.2.4.0 Release Notes

Release Date: 2018-05-29 // over 3 years ago
  • May 28, 2018


    NOTE Major breaking changes to Explicit modules, and some re-shuffling of typeclass constraints on various non-explicit functions that should only affect polymorphic usage.

    • ๐ŸŽ Huge improvements in performance! Around 20-40% reduction in runtimes/overheads, with savings higher for large matrix situations or situations with expensive add.
    • However, this restructuring required major reshuffling of constraints on Backprop/Num for most functions. These are potentially breaking changes for polymorphic code, but monomorphic code should remain unchanged. However, code using the Explicit interfaces is most likely broken unfortunately. Fixes just include adding or dropping zeroFuncs to the appropriate functions.
    • Added warnings to Explicit modules that the API is "semi-stable".
    • overVar and %~~, for modifying fields. Essentially a wrapper over a viewVar and setVar.
    • Argument order in the backpropWith family of functions changed again; breaking change for those using any backpropWith function. However, the new order is much more usable.
    • Changes to the argument order in the backprop family of functions in the Explicit interfaces now reverted back to previous order, from v0.2.0 and before. Should be an "un-breaking" change, but will break code written in v0.2.3 style.
    • ๐Ÿ“š Bechmarks now include HKD access and a "hybrid" approach. Documentation updated to reflect results.
    • ๐Ÿ“š Documentation updated to include a new "unital" law for one, namely one = gradBP id.
    • Fixity declarations for ^^?, ^^?!, and <$>.
    • Added fmap . const and <$ to Prelude modules.
    • Backprop instances for Expr from simple-reflect
    • Added zeroVecNum and oneVecNum to Numeric.Backprop.Class, which is potentially more efficient than zeroVec and oneVec if the items are instances of Num and the vectors are larger. Also added NumVec newtype wrapper giving Backprop instances to vectors using zeroVecNum and oneVecNum instead of zeroVec and oneVec.
    • ๐Ÿ— Build.hs build script now also builds profiling results