This is a heavy modification of the original cp-decomposition algorithm that implements the method from their paper Speeding-up Convolutional Neural Networks Using Fine-tuned CP-Decomposition.
The most important modification is that now you can decompose more than one layer, according to given tensor rank (refer to cpd_example.py
).
It also fixes some bugs and remove unnecessary complexity, making the usage and extensibility much simpler. In other words, it does what it is supposed to do: CP decomposition of convolutional layers. No more, no less.
pycaffe
scikit-tensor
With simplicity in mind, some limitations arises such as:
- Convolutional layer paramaters that are non-uniform (e.g
kernel_h
,kernel_w
,pad_h
,pad_w
,stride_h
andstride_w
) are not supported. However, you can easily modify the code to your needs. - Multi branch networks are not supported.