Download Latest Version v0.7.0 _Memories of Ice_ source code.tar.gz (1.2 MB)
Email in envelope

Get an email when there's a new version of Arraymancer

Home / v0.6.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2020-01-08 4.3 kB
Windwalkers source code.tar.gz 2020-01-08 1.1 MB
Windwalkers source code.zip 2020-01-08 1.4 MB
Totals: 3 Items   2.5 MB 0

Arraymancer v0.6.0 - Windwalkers

This release is named after "Windwalkers" (2004, French "La Horde du Contrevent"), by Alain Damasio.

Changes: - The symeig proc to compute eigenvectors of a symmetric matrix now accepts an "uplo" char parameter. This allows to fill only the Upper or Lower part of the matrix, the other half is not used in computation. - Added svd_randomized, a fast and accurate SVD approximation via random sampling. This is the standard driver for large scale SVD applications as SVD on large matrices is very slow. - pca now uses the randomized SVD instead of computing the covariance matrix. It can now efficiently deal with large scale problems. It now accepts a center, n_oversamples and n_power_iters arguments. Note that pca without centering is equivalent to a truncated SVD. - LU decomposition has been added - QR decomposition has been added - hilbert has been introduced. It creates the famous ill-conditioned Hilbert matrix. The matrix is suitable to stress test decompositions. - The arange procedure has been introduced. It creates evenly spaced value within a specified range and step - The ordering of arguments to error functions has been converted to (y_pred, y_target) (from (y_target, y_pred)), enabling the syntax y_pred.accuracy_score(y). All existing error functions in Arraymancer were commutative w.r.t. to arguments so existing code will keep working. - A solve procedure has been added to solve linear system of equations represented as matrices. - A softmax layer has been added to the autograd and neural networks complementing the SoftmaxCrossEntropy layer which fused softmax + Negative-loglikelihood. - The stochastic gradient descent now has a version with Momentum

Bug fixes: - gemm could crash when the result was column major. - The automatic fusion of matrix multiplication with matrix addition (A * X) + b could update the b matrix. - Complex converters do not pollute the global namespace and do not prevent string conversion via $ of number types due to ambiguous call. - in-place division has been fixed, a typo made it into substraction. - A conflict between NVIDIA "nanosecond" and Nim times module "nanosecond" preventing CUDA compilation has been fixed

Breaking: - In symeig, the eigenvectors argument is now called return_eigenvectors. - In symeig with slice, the new uplo precedes the slice argument. - pca input "nb_components" has been renamed "n_components". - pca output tuple used the names (results, components). It has been renamed to (projected, components). - A pca overload that projected a data matrix on already existing principal axes was removed. Simply multiply the mean-centered data matrix with the components instead. - Complex converters were removed. This prevents hard to debug and workaround implicit conversion bug in downstream library. If necessary, users can re-implement converters themselves. This also provides a 20% boost in Arraymancer compilation times

Deprecation: - The syntax gemm(A, B, C) is now deprecated. Use explicit "gemm(1.0, A, B, 0.0, C)" instead. Arguably not zero-ing C could also be a reasonable default. - The dot in broadcasting and elementwise operators has changed place Use +., *., /., -., ^., +.=, *.=, /.=, -.=, ^.= instead of the previous order .+ and .+=. This allows the broadcasting operators to have the same precedence as the natural operators. This also align Arraymancer with other Nim packages: Manu and NumericalNim

Thanks to @dynalagreen for the SGD with Momentum, @xcokazaki for spotting the in-place division typo, @Vindaar for fixing the automatic matrix multiplication and addition fusion, @Imperator26 for the Softmax layer, @brentp for reviewing and augmenting the SVD and PCA API, @auxym for the linear equation solver and @berquist for the reordering all error functions to the new API. Thanks @b3liever for suggesting the dot change to solve the precedence issue in broadcasting and elementwise operators.

Source: README.md, updated 2020-01-08