DiffSharp: Differentiable Functional Programming
Make_DM_ofDV
and DV.Append
DM
operations map2Cols
, map2Rows
, mapi2Cols
, mapi2Rows
primalDeep
for the deepest primal value in nested AD valuesDM.Min
Mean
, Variance
, StandardDev
, Normalize
, and Standardize
functionsReshapeCopy_DV_DM
and ReshapeCopy_DM_DV
Abs
, Sign
, Floor
, Ceil
, Round
, DV.AddSubVector
, Make_DM_ofDs
, Mul_Out_V_V
, Mul_DVCons_D
DV.isEmpty
and DM.isEmpty
Version 0.7.0 is a reimplementation of the library with support for linear algebra primitives, BLAS/LAPACK, 32- and 64-bit precision and different CPU/GPU backends
DiffSharp.AD
(with DiffSharp.AD.Float32
and DiffSharp.AD.Float64
variants, see below). This internally makes use of forward or reverse AD as needed.Float32
and Float64
versions providing the same functionality with the specified precision. 32 bit floating point operations are significantly faster (as much as twice as fast) on many current systems.D
for scalars, DV
for vectors, and DM
for matrices use the underlying linear algebra backend for highly optimized native BLAS and LAPACK operations. For non-BLAS operations (such as Hadamard products and matrix transpose), parallel implementations in managed code are used. All operations with the D
, DV
, and DM
types support forward and reverse nested AD up to any level. This also paves the way for GPU backends (CUDA/CuBLAS) which will be introduced in following releases. Please see the documentation and API reference for information about how to use the D
, DV
, and DM
types. (Deprecated: The FsAlg generic linear algebra library and the Vector<'T>
and Matrix<'T>
types are no longer used.)DiffSharp.AD
subtraction operation between D
and DF
DiffSharp.Interop
namespaceint
DiffSharp.AD
, DiffSharp.AD.Forward
and DiffSharp.AD.Reverse
are now the main components of the library, providing support for nested AD operations.D
DiffSharp.AD.Forward
, DiffSharp.AD.Forward2
, DiffSharp.AD.ForwardG
, DiffSharp.AD.ForwardGH
, DiffSharp.AD.ForwardN
, DiffSharp.AD.Reverse
are now called DiffSharp.AD.Specialized.Forward1
, DiffSharp.AD.Specialized.Forward2
, DiffSharp.AD.Specialized.ForwardG
, DiffSharp.AD.Specialized.ForwardGH
, DiffSharp.AD.Specialized.ForwardN
, DiffSharp.AD.Specialized.Reverse1
DiffSharp.AD.Specialized.Reverse1
module is reimplemented from scratch, not requiring a stackDiffSharp.AD.ForwardReverse
module is removed. This functionality is now handled by the nested modules.DiffSharp.Util.LinearAlgebra
moduledualSet
-> dualPT
, dualAct
-> dualP1