There is a newer version of the record available.

Published November 30, 2020 | Version v2.11
Software Open

lwtnn/lwtnn: Version 2.11

Description

Major Change: Templated Classes

The biggest change in this release is that all the core matrix classes are now templated. Thanks to @benjaminhuth, who implemented it as a way to make networks differentiable (with autodiff: https://github.com/autodiff/autodiff/). It might also be useful to lower the memory footprint of NNs by using float rather than double as the elements of Eigen matrices.

The new templated classes can be found in include/lwtnn/generic and in the lwt::generic:: namespace. To avoid breaking backward compatibility, all the old files still exist in the original location. Where possible these files contain wrappers on the new templated version. In most cases, building against these wrapper classes won't force you to include Eigen headers (as was the case before).

Major Addition: FastGraph

It turns out that looking up every input in a std::map<std::string,double> is really slow in some cases! This release adds a new interface, FastGraph which takes its inputs as std::vector<Eigen::VectorX<T>> (for scalar inputs) or std::vector<Eigen::MatrixX<T>> (for sequences), and returns an Eigen::VectorX<T>. The FastGraph interface is templated, so you can use any element type supported by Eigen.

Minor Fixes

There are quite a few fixes, mostly in the python converter code:

  • The keras converter now supports activation layers in sequences (#99)
  • For those using BUILTIN_EIGEN with CMake, bumped the version of Eigen from 3.2.9 to 3.3.7 (thanks @ductng). If you're not using BUILTIN_EIGEN this should have no effect on you.
  • Various compatibility fixes for newer versions of Keras, deprecated Travis settings, etc
  • lwtnn-split-keras-network.py no longer depends on keras

Files

lwtnn/lwtnn-v2.11.zip

Files (118.1 kB)

Name Size Download all
md5:b79708c4fcb1889ef6df607bf38d1aa3
118.1 kB Preview Download

Additional details

Related works