Binary Convolution Network for faster real-time processing in ASICs
Tensorflow implementation of Towards Accurate Binary Convolutional Neural Network by Xiaofan Lin, Cong Zhao, and Wei Pan.
Why this network? Let's quote the authors
It has been known that using binary weights and activations drastically reduce memory size and accesses, and can replace arithmetic operations with more efficient bitwise operations, leading to much faster test-time inference and lower power consumption.
The implementation of the resulting binary CNN, denoted as ABC-Net, is shown to achieve much closer performance to its full-precision counterpart, and even reach the comparable prediction accuracy on ImageNet and forest trail datasets, given adequate binary weight bases and activations.
pip install -r requirements.txt
By default tensorflow-gpu
will be installed. Make sure to have CUDA
properly setup.
NOTE: shift_parameters and beta values are currently not trainable. This is because the gradient for
tf.sign
andtf.clip_by_value
were not implemented intensorflow v1.4
. Even in the current version (tensorflow v1.8
) the gradient fortf.sign
is not implemented. Implementation of custom Straight Through Estimator (STE) is required.
ABC
layertensorflow v1.8.0
tf.sign