[mlpack] GSoC 2020: Visualization Tool

Gopi Manohar Tatiraju deathcoderx at gmail.com
Tue Mar 17 09:40:49 EDT 2020


Hey Mentors,

Regarding the visualization project, I am looking for some feedback and
help to prepare a proof of concept.
My previous mail depicts my doubts about should we integrate this tool with
the existing library as this will impact our path to build the tool.
Also I have already started to work on the tool, I took the existing model
of mlpack(Digit Recognizer
<https://github.com/mlpack/models/tree/master/Kaggle/DigitRecognizerBatchNorm/src>
)

   - Using openCV I visualised the MNIST dataset. OpenCV doesn't have any
   in-build function to load .csv images so I wrote my custom function for
   that. The output is something like this, also the label will be displayed
   in the terminal or if required we can add it to the image itself:
   [image: 1.png]



   - Using matplotlibcpp I also plotted accuracy while training the model.
   This can be displayed in two ways:
      1. Either at the time of training. The graph will be updated after
      each epoch(better on faster machines)
      2. Show the whole graph once the whole training is done.

[image: 0.png]


   - I also made a graph which depicts the order of layers added in the
   model. I used openCV for this, also I read that text rendering is not much
   efficient in openCV so maybe we can discuss how to tackle that by some
   testing.

[image: 2.png]

Till now this much has been done, I am thinking about more model metric
like loss and many other ML metrics. Using articles like these
<https://towardsdatascience.com/20-popular-machine-learning-metrics-part-1-classification-regression-evaluation-metrics-1ca3e282a2ce>
and referring to research papers, we can discuss what more to add. Also the
main point still remains is how the user will use the tool.

Can I get some feed back regarding this, as proposal submission is already
open and I want to submit a detailed proposal.


Project:
https://github.com/mlpack/mlpack/wiki/SummerOfCodeIdeas#visualization-tool
Mentor: Ryan Birmingham
Mail-List: mlpack at lists.mlpack.org

Regards.
Gopi M Tatiraju



On Fri, Mar 13, 2020 at 1:54 AM Gopi Manohar Tatiraju <deathcoderx at gmail.com>
wrote:

> Hey Rahul,
>
> If you don't mind me asking, are you mentoring this project? Coz it was
> not listed on the idea page and there are many things which I would I like
> to discuss about this project from a mentor's perspective.
> About serialized model, I need to go through the saved .h5 file to see how
> exactly we can use it. Also I am just trying to determine what all can be
> included in this project, I am yet to decide how to implement these things
> coz there are many options available. As it was mentioned on the idea page
> that proof of concept is required so I am just working on determining the
> outlines of the project first,
>
> Regards.
> Gopi M Tatiraju
>
>
> On Fri, Mar 13, 2020 at 1:35 AM Rahul Prabhu <cupertinorp at gmail.com>
> wrote:
>
>> Hey Gopi,
>> Thanks for the interest in this project. I was wondering, to visualize
>> the neural network, could we not just parse the serialized model returned
>> by data::Save()?
>>
>> On Thu, Mar 12, 2020 at 11:59 PM Gopi Manohar Tatiraju <
>> deathcoderx at gmail.com> wrote:
>>
>>> Hey,
>>>
>>> Regarding Visualization Tool, I think we may need to use one or more
>>> different libraries to build it, so a discussion regarding the dependencies
>>> is needed to proceed further.
>>>
>>> I took the example of Digit Recogniser
>>> <https://github.com/mlpack/models/tree/master/Kaggle> and started
>>> working on it.
>>>
>>> I started by visualising the dataset itself. Using OpenCV I wrote code
>>> to read images from CSV file and display them(OpenCV doesn't have any
>>> function to read csv files as images).
>>>
>>> Now I think another good visual will be a list of all the layers and
>>> activation function which are used and connections between them. Now we
>>> have some options to do this:
>>>
>>>    1. *Total Naive Approach: *We can use file handling. Our tool will
>>>    take code file as input. All layers are added like this(Add<Parameter>). We
>>>    can detect the parameters and using openCV we can arrange them in a graph
>>>    fashion.
>>>    2. *A better approach: *A better approach will be to add a variable
>>>    or function (for ex. FNN class) which keep track of the layers being added
>>>    and other required parameters. Then we can create an object of visual
>>>    class, and the FNN class object can be passed to this visual class which
>>>    then can produce the required visualization.
>>>
>>> *Method 1 *maybe not that efficient and is prone to many errors as here
>>> we also have to ensure code file given by the user contains right code and
>>> all the connections are properly done. But here we don't need to touch any
>>> of the base code of the library so required testing will be only be limited
>>> to Visual Tool Class
>>>
>>> *Method 2 *is efficient but changing the base code of the library will
>>> required extensive testing before we can merge it. Testing will take more
>>> time here, but using objects can we more beneficial.
>>>
>>> I need some views regarding what method should be chosen and how to
>>> proceed from here. Once the flow is established other parameters like
>>> accuracy, bias and other parameters can be visualised using graphs. I have
>>> some parameters in mind for now, we can also take some inspiration from
>>> tensor-board <https://www.tensorflow.org/tensorboard> for that.
>>>
>>> Waiting for suggestion as  I am planning to implement a proof of concept
>>> so that we can understand the project better.
>>>
>>> Regards
>>> Gopi M Tatiraju
>>>
>>> _______________________________________________
>>> mlpack mailing list
>>> mlpack at lists.mlpack.org
>>> http://knife.lugatgt.org/cgi-bin/mailman/listinfo/mlpack
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20200317/d6571fbb/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 1.png
Type: image/png
Size: 7590 bytes
Desc: not available
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20200317/d6571fbb/attachment-0003.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0.png
Type: image/png
Size: 32098 bytes
Desc: not available
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20200317/d6571fbb/attachment-0004.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 2.png
Type: image/png
Size: 52678 bytes
Desc: not available
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20200317/d6571fbb/attachment-0005.png>


More information about the mlpack mailing list