GSoC 2017 - First Evaluation

The summer is passing by quickly and its almost time for the first evaluation. Following the first two weeks which mainly involved fixing and completing old features, the third week began with writing unit tests for backend modules. Until now the project had no unit tests and covering all the previous backend code was a mammoth task. The project supports multiple deep learning frameworks and has different backends to handle import and export from each of them. I started with writing unit tests for the import backend of the Caffe framework but could not move on to the export portion as details defining what would mean success for the test were not finalized yet.

So, I moved on to adding support for Python layer in the Caffe framework, this layer allows users to implement any custom logic through a Python wrapper and therefore required special attention as it can have an arbitrary number of parameters. So when parsing layers of this type I had to add functionality to dynamically add fields depending on the number of parameters, allowing users to edit each parameter as they would for a normal layer. By this time the details for the export functionality were finalized and I started working on them followed by integrating Coveralls to show code coverage as its developed.

We now wanted to add support for another deep learning framework and were trying to finalize whether to start with Tensorflow, PyTorch or Keras. We started with Keras over the other two, as it follows the layer model similar to Caffe while Tensorflow and PyTorch look at each step as an op and it was therefore easier to integrate Keras support into our existing framework. So I started with and completed support for importing any Keras model json into Fabrik.

So at this moment, Fabrik supports imports from Caffe, Keras and Tensorflow(few layers) and export to Caffe and Tensorflow. In the coming weeks I’ll be working on adding the export functionality for Keras and then we’ll probably start with another framework such as Tensorflow.