[Scilab-Dev] Machine Learning Toolbox

Tan Chin Luh chinluh at tritytech.com
Fri May 19 10:22:27 CEST 2017


Hi all Scilab and machine learning enthusiasts,

Great to have this topic in the mailing list as I am also exploring in 
deep learning recently.

 From my point of view, there are a few possibilities to build the ML  
toolbox in Scilab, namely:
1. Using the Scilab Matrix operation (Pro: fast for the parts which 
allow vectorization, Con: memory issue. Not sure about GPU support)
2. Using C/C++ API, such as caffe, caffe2, dlib, tiny dnn....?
3. Using Python API through PIMS, such as python with tensorflow, keras, 
dlib...?
4. Using Java interface throught JIMS, such as....? (a few i came across 
which never explore..)

For the small to medium size network such as conventional FFBP, i think 
method one would have  advantage as the batch processing could speed up 
the training and the codes are highly "readable" for non hardcore 
programmer. The network weights which could be simply representing by 
the matrices (1-2 hidden layers) and let the users easily visualize the 
"internal beauty" of the trained network with Scilab visualization features.

However, when we move to CNN, or other deep learning network, i am not 
sure whether we could leverage the advantage of this. Or at least, it 
won't be a "jumpstart" way to build a new ML module.

In seeing this, a quick "jumpstart" could be looking into the 2-4 
methods. Then another issue might appear. Each of these having their 
class/structure to  keep the complicated deep network architecture, and 
how are we going to interface this to Scilab? Should we:
1. Use the objects (Java objects, C++ class object in Scilab)  to access 
the network created or loaded through the API?
2. Convert the objects into the Scilab mlist so it is more readable?

Then from the Scilab programmers point of view, if we were using the 
JIMS or PIMS, at the ends the Scilab codes would be very much looks like 
Python or Java style,  unless we wrote another macros to wrap all these 
into Scilab style. So far I think the C/C++ API might be the most 
"seamless" integrated into Scilab,  which we could utilizing parts of 
the C/C++ libraries while others work in Scilab

Finally as for the GPU usage concern, using libs could have solve this 
depending on the lib being used.

Forgive me if I made any mistake, just my 2 cents.

Regards,
Tan Chin Luh



More information about the dev mailing list