- Added
data_frame.series:integrate()
method. - Added
dataset:bunches(bsize)
anddataset.token:bunches(bsize)
methods.
- Improved serialize/deserialize functions, reimplemented all the serialization procedure.
- Added exceptions support to LuaPkg and APRIL-ANN, allowing to capture C++ errors into Lua code.
- Added
set
class. - Added
series
class. - Added
data_frame
class, similar to Python Pandas DataFrame. - Serialization and deserilization have been updated with more robust and
reusable API, implemented in
util.serialize()
andutil.deserialize()
functions. - Added
matrix.ext.broadcast
utility (similar to broadcast in numpy). - Added
ProbablisitcMatrixANNComponent
, which allow to implement probabilistic mixtures of posteriors and/or likelihoods.
- Added batch normalization ANN component.
- Allowing
matrix.join
to add new axis. - Added methods
prod()
,cumsum()
andcumprod()
atmatrix
classes. - Added methods
count_eq()
andcount_neq()
atmatrix
classes. - Serializable objects API have been augmented with methods
ctor_name()
andctor_params()
in Lua, refered toluaCtorName()
andluaCtorParams()
in C++. - Added
cast.to
to dynamic cast C++ objects pushed into Lua, allowing to convert base class objects into any of its derived classes. - Added
matrix.sparse
as valid values for targets inann.loss.mse
andann.loss.cross_entropy
. - Changed
matrix
metamethods__index
and__newindex
, allowing to usematrix
objects with standard Luaoperator[]
. - Added
matrix.masked_fill
andmatrix.masked_copy
matrix. - Added
matrix.indexed_fill
andmatrix.indexed_copy
matrix. - Added
ann.components.probabilistic_matrix
, and its corresponding specializationsann.components.left_probabilistic_matrix
andann.components.right_probabilistic_matrix
. - Added operator[] in the right side of matrix operations.
- Added
ann.components.transpose
. - Added
max_gradients_norm
intraianble.supervised_trainer
, to avoid gradients exploding. - Added
ann.components.actf.sparse_logistic
a logistic activation function with sparsity penalty. - Simplified
math.add
,math.sub
, ... and other math extensions for reductions, their original behavior can be emulated by usingbind
function. - Added
bind
function to freeze any positional argument of any Lua function. - Function
stats.boot
usesmultiple_unpack
to allow a table of sizes and the generation of multiple index matrices. - Added
multiple_unpack
Lua function. - Added
__tostring
metamethod to numeric memory blocks in Lua. - Added
dataset.token.sparse_matrix
, a dataset which allow to traverse by rows a sparse matrix instance. - Added
matrix.sparse.builders.dok
, a builder which uses the Dictionary-of-Keys format to construct a sparse matrix from scratch. - Added method
data
to numeric matrix classes. - Added methods
values
,indices
,first_index
to sparse matrix class.
- Fixed bugs when reading bad formed CSV files.
- Fixed bugs at statistical distributions.
- FloatRGB bug solved on equal (+=, -=, ...) operators. This bug affected ImageRGB operations such as resize.
- Solved problems when chaining methods in Lua, some objects end to be garbage collected.
- Improved support of strings in auto-completion (rlcompleter package).
- Solved bug at
SparseMatrix<T>
when reading it from a file. - Solved bug in
Image<T>::rotate90_cw
methods. - Solved bug in
SparseMatrix::toDense()
method.
- Better
LuaTable
accessors, using[]
operator. - Implementation of matrix
__index
,__newindex
and__call
metamethods in C++. - Implementation of
matProd()
,matCumSum()
andmatCumProd()
functions. - Implementation of
matCountEq()
andmatCountNeq()
functions forMatrix<T>
. - Updated
matrix_ext_operations.h
to change API of matrix operations. All functions have been overloaded to accept an in-place operation and another version which receives a destination matrix. - Adding iterators to language models.
- Added
MatrixScalarMap2
which receives asinput2
aSparaseMatrix
instance. This functions needs to be generalized to work with CPU and CUDA. - The method
SparseMatrix<T>::fromDenseMatrix()
uses aDOKBuilder
object to build the sparse matrix. - The conversion of a
Matrix<T>
into aSparseMatrix<T>
has been changed from a constructor overload to the static methodSparseMatrix<T>::fromDenseMatrix()
.
- Added support for IPyLua.
- Optimized matrix access for confusion matrix.
- Minor changes in
class.lua
. - Improved binding to avoid multiple object copies when pushing C++ objects.
- Added Git commit hash and compilation time.
- Added
matrix.op.repmat
function. - Added
matrix.ext.iterate
iterator. - Added statistical distributions in
stats.dist
. - Added
matrix.ext.convolution
andmatrix.ext.real_fftwh
. - Added
Matrix<T>::convolution
method. It is in experimental stage, please, be advice to use them by your own risk. - Because of the changes in
Image
, several classes in packageimaging
has been reviewed, consistent tests are necessary to merge with master branch.
- Removed major order differentiation in
matrix
. tokens.matrix
automatically wrapsmatrix
instances, from Lua to C++.matrix
automatically unwrapstokens.matrix
instances, from C++ to Lua.- Added new methods to
AprilMath::Limits
class. - Added
metrics.roc
for ROC computation. - Added new
class
behavior taken from Lua OOP-iter, in order to introduce more modularity in APRIL-ANN. - New
april_doc
andapril_set_doc
API, works with values instead of strings. - Added
table.values
,table.ivalues
,table.keys
andtable.ikeys
iterators. matrix.dict
could store sparse and dense float matrices.- Added
matrix.cholesky(...)
method.
- Solved bug at
matrix:max()
andmatrix:min()
methods. - Removed memory leak at
SelectANNComponent::doBackprop()
method. - Solved bug at
CopyANNComponent::doBackprop()
method, incorrect behavior for multi-dimensional matrices. - Solved bug at
ZCAWhiteningANNComponent::doBackprop()
method was wrong. - Solved bug in
stats.boot()
function, it wasn't correctly updated to newclass
functions. - Solve bug in
trainable.supervised_trainer
, problem with smooth_gradients flag. - Solved bug in trainable.lua
train_holdout:execute()
method, the pocket algorithm wasn't work with negative loss functions. - Solved bug at class.lua, inifite loop when calling
class.is_a()
. - Solved bug at autoencoder training.
- Solved bug in ROC computation.
- CUDA is working, time performance of convolutions needs a review.
- Solved bug in
constString
extract numeric methods which returnsfalse
when the extraction procedure ends up to the character after the last valid number. - Solved bug at
Matrix<T>::div
andSparseMatrix<T>::div
methods.
- Added
LuaTable
class to allow access of Lua tables from C++ code. - Added TAR support in C/C++, allowing to use streams as the standard I/O objects in APRIL-ANN.
- Added
basics
namespace which stores almost all C/C++ code inbasics
packages. - Simplified read/write of matrices using the new
StreamInterface
objects. - Added new
StreamInterface
for input/output operations, with specializations for C files, C strings, Lua strings, GZIP files, ZIP files. Other specializations are easier to implement in the future. - Added statistical distribution classes.
- Removed C stack trace in ERROR_PRINT and ERROR_EXIT when compiling without debug.
Image
class code has been reviewed to be more coherent with currentMatrix
class implementation.
- Added
clustering
andknn
algorithms. - Added
ann.components.zca_whitening
andann.components.pca_whitening
classes. - Added
stats.zca_whitening
andstats.pca_whitening
functions. - Added packages
autodiff
andautodiff.ann
, with automatic differentiation algorithms. - Added
ann.optimizer.quickprop
algorithm, but stills untested. - Gradients smoothing, based on weights sharing and
bunch_size
, is applied bytrainable.supervised_trainer
objects, not by theoptimizer
. - Added
ann.components.dropout
class. - Added
ann.autoencoders.ae
class, in order to factorize the SDAE code. - Solved problems with CUDA compilation, but it stills not working because an error during cuMemAlloc.
- Class interest_points and layout algorithms (still in development).
- Added the geometry c++ class for working in to lines and point geometry.
- Modified bootstrapping API in order to be similar with R:
stats.boot()
andstats.boot.ci()
. - Added
ann.optimizer.asgd
for Averaged SGD optimization. - Added
trainable.qlearning_trainer
for reinforcement learning tasks. - Enhanced
util.serialize
andutil.deserialize
to accept functions as argument, allowing to serialize/deserialize over general streams. - Added
iscallable(...)
function. - Added
utest
package, for unit testing. - Added methods to
matrix
which work with sparse matrices. - Added class
matrix.sparse
. - Added method
m:toTabStream(file or gzfile)
tomatrix
. - Added operations
math.log1p
andmath.logadd
. - Added operator
%
to Luastring
metatable, allowing to do Python-like string formatting, and map-like substitutions. - Added index matrix for min/max operations in
matrix
objects. - Added
serialize
anddeserialize
Lua functions, inutil
package.
- Solved bug which makes to load unitialized weight matrices when loading old
trainable.supervised_trainer (without
matrix.dict
object). - Solved bug at
Matrix<T>::sliding_window
which makes an early end of the iterator when window has anoffset
different of 0.
- Added
-lcblas
option tobuild_release.lua
andbuild_debug.lua
. - Added sparse CBLAS wrappers, for CUDA (not tested) and standard release.
- Added CBLAS wrappers for float, double, and ComplexF types.
- Added geometric parametrizer for off-line text preprocessing.
- Added dependency with
liblapacke
for PCA when not available MKL or MacOS X.
- Added argument check at
mathcore.block.*
constructors. - Travis is monitoring only master and devel branches, for push and pull-requests.
- Added travis compilation and testing platform for pull-requests.
- Added
matrix:linspace(a,b)
andmatrix:linspace(a,b,base)
. matrix:transpose()
returns a matrix which references the original. Any modification to the tranposed matrix, will be reflected at the original.matrix:cmul
method is now in-place, so, if you don't want to modify the original matrix, you need to dom:clone():cmul(...)
instead ofm:cmul(...)
.update
property is added toann.optimizers.sgd
object in order to compute the momentum.- Optimizers
execute
method receives a functions which computes the loss, the gradient (mandatory). Any other data is optional. - Removed dropout code from activation functions.
- Deleted options from ANN components.
- Added methods
unroll
andget
toann.components.stack
class. - Added
inf
andsup
limits to Hard-Tanh activation function. - Added
random:to_lua_string()
method. - Moved
ann.loss.__base__
toann.loss
. - Moved
ann.components.actf.__base__
toann.components.actf
.
- Added Sauvola's binarization method.
- Added a normalize handwritting text utilities based on the main areas of the text.
- Added
matrix.dict
, a hash set dictionary in C++ binded to Lua, which allows to execute basic math operations and reductions over the whole set of contained matrices. It major purpose is to represent a set of connection weights or gradients in ANNs. - Added
dataset.token.filter
, which allows ANN components as filters. - Added
trainable.train_holdout_validation
class, which replacetrainable.supervised_trainer:train_holdout_validation
method. - Added
trainable.train_wo_validation
class, which replacetrainable.supervised_trainer:train_wo_validation
method. - Added
trainable.dataset_pair_iterator
andtrainable.dataset_multiple_iterator
, useful to iterate over datasets following different traversal schemes: sequential, shuffled, shuffled with replacement, shuffled with distribution. - Added method
precompute_output_size
in ANN components. - Added
ann.optimizer.cg
, Conjugate Gradient algorithm. - Added
ann.optimizer.rprop
, Resilient Prop algorithm. - Added
batch_fmeasure_micro_avg
andbatch_fmeasure_macro_avg
for multi-class FMeasure computation. - Renamed loss function
local_fmeasure
asbatch_fmeasure
, and improved to work with multi-class models. - Added
ann.loss.zero_one
loss function. - Added
DEPENDENCIES-INSTALLER.sh
. - Added syntactic sugar for
matrix:slice(...)
method:m("1:2","3:4")
orm({1,2},{3,4})
, like in Matlab or Octave. - Added
matrix.svd
andmatrix.diagonalize
. - Added
stats.pca
,stats.mean_centered
,stats.pca_whitening
.
- Memory leak due to the GPUMirroredMemoryBlock pool was solved.
- Solved bug at
stats.correlation.pearson
. - Solved bug at
trainable
when usinguse_dataset
,train_dataset
,validate_dataset
,grad_check_dataset
methods without abunch_size
parameter, and with a trainer which has not abunch_size
defined at construction. - Stabilization of log-logistic activation function.
- Stabilization of training with cross-entropy and multi-class-entropy.
- Solved bug when reading using
matrix.fromTabFilename
. The loader failed when the file had empty lines. - Solved bug at
Matrix<T>::select(...)
C++ method. The matrix offset wasn't be added to the resulting matrix offset. - Solved bug at
SlidingWindow::setAtWindow(...)
C++ method. The matrix offset wasn't be added to the computed window position. - Solved bug at
buffered_memory.h
. Such bug introduces an early stop when reading matrices, ignoring the last lines of files. - Solved problem with
rlcompleter
, which didn't work properly when loaded as a Lua module. - Modified
configure.sh
to inform about any error during Lua building. - Loadable modules are working on MacOs X.
- Added
Matrix<T>::random_acces_iterator
, which reduces the access overhead for random access of aMatrix
object. It retains the memory pointer forcing an update between host and device (GPU) memory. - Generalized
GPUMirroredBlockBase
to allow the reinterpretation of the underlying memory pointer using different types (reinterpret_cast). - Added
MatrixSet
class template, which stores a dictionary of STRING->MATRIX, useful for ANNs and gradient descent purposes. - Added
StochasticANNComponent
which is base class for stochastic components. - Simplified coupling between ANN components, ANN loss functions, introducing automatic binding between MatrixFloat and TokenMatrixFloat.
- ANN Components has a pointer to a
MatrixFloat
instead ofANN::Connections
. ANN::Connections
is a static class with helper functions, and it is binded asann.connections
.- Old-weights property is removed from ANN connections.
- Added automatic conversion between DataSetFloat and DataSetToken in
dataset.token.filter
anddataset.token.union
. - Added
FunctionInterface
class, in Lua asfunctions
class, superclass of ANN components.
- Added
loss
parameter totrainable.supervised_trainer
methods. - Added
optimizer
parameter totrainable.supervised_trainer
methods. - Added
ann.optimizer
package, which has the implementation of weight update based on weight gradient. So, the ANN components only compute gradients. This allows to implement different optimization methods (as "Conjugate Gradient", or "Linear Search Brack-Propagation") with the same gradient computation. - Loss functions
ann.loss
API has been changed, now the loss computation is done in two separated steps: -matrix = loss:compute_loss(output,target)
: which returns a matrix with the loss of every pair of patterns, allowing to perform several loss computations without taken them into account. -matrix = loss:accum_loss(matrix)
: which accumulates the loss in the internal state of the class. - Added a new version of
loss
function, which computes mean and sample variance of the loss. Besides, the loss computation is done with doubles, being more accurated than before. replacement
parameter in SDAE doesn't forceon_the_fly
parameter, they are independent.- SDAE training has been changed in order to allow the use of LUA datasets,
- Replaced
cpp_class_binding_extension
byclass_extension
function, adding Lua classes support besides to CPP binded classes. - Modified
class
andclass_instance
functions to be more homogeneous with C++ binding. - Added support for GZipped matrices load and save from C++, so functions
matrix.savefile
andmatrix.loadfile
(and its correspondence for complex numbers, double, int32, and char) were removed. Methodsmatrix.fromFilename
andmatrix.toFilename
accept '.gz' extension.
- Changed package
sdae
toann.autoencoders
. - Changed package
loss_functions
toann.loss
. - Splitted
mathcore
package intomathcore
andcomplex
packages. - Renamed
math
package tomathcore
to avoid the collision with Lua standard math library.
- APRIL-ANN is deployed as a standalone executable and as a shared library for Lua 5.2.
- Modified
lua.h
to incorporate the GIT commit number in the disclaimer. - Added Lua autocompletion when readline is available.
- Implemented SignalHandler class in C++.
- Added
signal.register
andsignal.receive
functions to Lua. - Added to
matrix
the methodsmap
,contiguous
,join
,abs
,tan
,atan
,atanh
,sinh
,asin
,asinh
,cosh
,acos
,acosh
,fromMMap
,toMMap
,div
,max
,min
. - Added
iterator
class, which is a wrapper around Lua iterators, but provides a more natural interface with functional programming procedures asmap
,filter
,apply
, orreduce
. - Added methods
iterate
,field
,select
to iterator Lua class. table.insert
returns the table, which is useful for reduction operations.- Added
table
method toiterator
class. - Added naive
L1_norm
regularization. - Added
dataset.clamp
. - Added
mathcore.set_mmap_allocation
function, which allows to forces the use of mmap formatrix
memory allocation. - Added
ann.components.slice
. - Added GS-PCA algorithm for efficient computation of PCA (iterative algorithm),
stats.iterative_pca
Lua function. - Added basic MapReduce implementation in Lua.
- Added
stats.correlation.pearson
Lua class. - Added
stats.bootstrap_resampling
function. - Added
math.add
,math.sub
,math.mul
,math.div
functions. trainable
andann.mlp.all_all
are usingmatrix:to_lua_string()
method.- Added method
to_lua_string()
in all matrix types, so the method produce a Lua chunk which is loadable and produce a matrix. - Added serialization to
parallel_foreach
, allowing to produce outputs which could be loaded by the caller process. - Declaration of
luatype
function as global, it wasn't. - Added
iterable_map
andmultiple_ipairs
functions to the Lua utilities. - Added SubAndDivNormalizationDataSet, applies a substraction and a division of the feature vectors.
- Added stepDataset.
- Solved bug at
luabind_template.cc
, which introduced spurious segmentation faults due to Lua execution of garbage collection in the middle of alua_pushClassName
. - Solved bug at glob function.
- Solved bug at matrix iterators operator=.
- Solved bug at method
matrix::best_span_iterator::setAtWindow
. Becaose of It the method didn't works when the matrix was a sub-matrix (slice) of other matrix. - Solved bugs at Matrix template constructor which affects to
rewrap
lua method, and to select method, which affects toselect
lua method. - Added binarizer::init() to a binded static_constructor, it is needed to execute init() before decode/encode double numbers, because of endianism.
- Solved bug at constString when extracting double numbers in binary format.
- MacOS compilation problems solved.
- Solved problems with CUDA, it is working again.
- Dynamic loading of C modules is working now.
- Added BIND_STRING_CONSTANT to luabind, so it is possible to export C string constants to Lua.
- Removed warning of clang about unused variables, adding a new macro
UNUSED_VARIABLE(x)
defined in the headerutils/c_src/unused_variable.h
. - Matrix fromString and toString Lua methods have been improved to write/read directly from Lua string buffer, so the memory print has been reduced.
- The C++ routines to write and read files is generalized to work with streams, under the BufferedStream template, and it is instantiated to FILE and gzFile formats.
- Added sanity check to cross-entropy and multi-class cross-entropy loss functions, to detect the use of non logarithmic outputs.
- matrices with float (matrix), complex numbers (matrixComplex), double (matrixDouble), int32 (matrixInt32), and char (matrixChar).
- GZIO is fresh code, a wrapper over ZLIB, binded using LUABIND.
- Added LAPACK support, for matrix inversion computation.
- Updated Lua class mean_var to follow the method of Knuth.
- CUDA compiles, but stills not working :SSSSSS
- Solved problems of table.tostring.
- Generalization of matrix math operators.
- Specialization of math wrappers for float and complex numbers.
- Support for MAT-file format (Matlab matrices).
- Added mutual_information package.
- Added APRIL_EXEC and APRIL_TOOLS_DIR environment variables to configure.sh
- Added scripts for NBEST, but not working :SSSSSS
- Some memory leaks, and bugs are solved.