Working on nnet package

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Working on nnet package

vrozos
The development of the NNET package by the original author, Michael Schmid,
stopped in 2010. Three years ago Francesco Faccio [1] volunteered to
continue the development. However, NNET is still stuck on version 0.1.13,
Last Release Date: 2010-12-02. As a result, the recent changes in Octave and
the deprecation of some functions (e.g. finite) have render this package
broken. This is a shame. NNET is not state of the art, but it is the only
readily available option for NN in Octave. Currently, it is useless to the
average Octave user only because of some very minor issues.

I would like to contribute to this package doing some minor development
regarding the amount of work, but critical regarding the functionality (e.g.
replace deprecated functions and symbols, improve documents, etc.).

I am familiar with Mercurial and Github, but I don't know how Sourceforge
works.

Regards

Evangelos Rozos



[1]
http://octave.1599824.n4.nabble.com/Working-on-nnet-package-td4681048.html



--
Sent from: http://octave.1599824.n4.nabble.com/Octave-Maintainers-f1638794.html

Reply | Threaded
Open this post in threaded view
|

RE: Working on nnet package

elmusrati

Hi,

 

Yes, I totally agree.. Machine learning is state of the art now and it would be great to develop more functions to support this extremely important area. Since I use Octave in my Machine Learning course, I have written few functions for my students to implement ANN for example. They work fine under Octave as well as Matlab. But there are not similar to Matlab ANN toolbox structure. I may add them to Github so wider range of users may use them.

 

Question: Is it necessary for the developed packages to be identical as Matlab toolboxes? Is it possible to have Octave style CNN or Deep learning packages?

 

Thank you

 

M. Elmusrati

 

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Wednesday, March 6, 2019 3:40 PM
To: [hidden email]
Subject: Working on nnet package

 

The development of the NNET package by the original author, Michael Schmid,

stopped in 2010. Three years ago Francesco Faccio [1] volunteered to

continue the development. However, NNET is still stuck on version 0.1.13,

Last Release Date: 2010-12-02. As a result, the recent changes in Octave and

the deprecation of some functions (e.g. finite) have render this package

broken. This is a shame. NNET is not state of the art, but it is the only

readily available option for NN in Octave. Currently, it is useless to the

average Octave user only because of some very minor issues.

 

I would like to contribute to this package doing some minor development

regarding the amount of work, but critical regarding the functionality (e.g.

replace deprecated functions and symbols, improve documents, etc.).

 

I am familiar with Mercurial and Github, but I don't know how Sourceforge

works.

 

Regards

 

Evangelos Rozos

 

 

 

[1]

http://octave.1599824.n4.nabble.com/Working-on-nnet-package-td4681048.html

 

 

 

--

Sent from: http://octave.1599824.n4.nabble.com/Octave-Maintainers-f1638794.html

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Working on nnet package

Doug Stewart-4


On Wed, Mar 6, 2019 at 8:57 AM Mohammed Elmusrati <[hidden email]> wrote:

Hi,

 

Yes, I totally agree.. Machine learning is state of the art now and it would be great to develop more functions to support this extremely important area. Since I use Octave in my Machine Learning course, I have written few functions for my students to implement ANN for example. They work fine under Octave as well as Matlab. But there are not similar to Matlab ANN toolbox structure. I may add them to Github so wider range of users may use them.

 

Question: Is it necessary for the developed packages to be identical as Matlab toolboxes? Is it possible to have Octave style CNN or Deep learning packages?

 

Thank you

 

M. Elmusrati

 

 

About being Identical to matlab:

If we are not the same as matlab, then we will get a lot of complaints like " My code works on matlab but not on octave"
But we can have more features and different features (better) than matlab.
So we should try and minimize the complaints but still have unique and better code.
Just my 2C worth.

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Wednesday, March 6, 2019 3:40 PM
To: [hidden email]
Subject: Working on nnet package

 

The development of the NNET package by the original author, Michael Schmid,

stopped in 2010. Three years ago Francesco Faccio [1] volunteered to

continue the development. However, NNET is still stuck on version 0.1.13,

Last Release Date: 2010-12-02. As a result, the recent changes in Octave and

the deprecation of some functions (e.g. finite) have render this package

broken. This is a shame. NNET is not state of the art, but it is the only

readily available option for NN in Octave. Currently, it is useless to the

average Octave user only because of some very minor issues.

 

I would like to contribute to this package doing some minor development

regarding the amount of work, but critical regarding the functionality (e.g.

replace deprecated functions and symbols, improve documents, etc.).

 

I am familiar with Mercurial and Github, but I don't know how Sourceforge

works.

 

Regards

 

Evangelos Rozos

 

 

 

[1]

http://octave.1599824.n4.nabble.com/Working-on-nnet-package-td4681048.html

 

 

 

--

Sent from: http://octave.1599824.n4.nabble.com/Octave-Maintainers-f1638794.html

 

 



--
DASCertificate for 206392

Reply | Threaded
Open this post in threaded view
|

Re: Working on nnet package

vrozos
Will anyone advice me what should I do to become the maintainer of this
package?

On 06/03/2019 17:14, Doug Stewart wrote:

>
>
> On Wed, Mar 6, 2019 at 8:57 AM Mohammed Elmusrati
> <[hidden email] <mailto:[hidden email]>>
> wrote:
>
>     Hi,
>
>     Yes, I totally agree.. Machine learning is state of the art now
>     and it would be great to develop more functions to support this
>     extremely important area. Since I use Octave in my Machine
>     Learning course, I have written few functions for my students to
>     implement ANN for example. They work fine under Octave as well as
>     Matlab. But there are not similar to Matlab ANN toolbox structure.
>     I may add them to Github so wider range of users may use them.
>
>     Question: Is it necessary for the developed packages to be
>     identical as Matlab toolboxes? Is it possible to have Octave style
>     CNN or Deep learning packages?
>
>     Thank you
>
>     M. Elmusrati
>
> About being Identical to matlab:
>
> If we are not the same as matlab, then we will get a lot of complaints
> like " My code works on matlab but not on octave"
> But we can have more features and different features (better) than matlab.
> So we should try and minimize the complaints but still have unique and
> better code.
> Just my 2C worth.
>
>     Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986>
>     for Windows 10
>
>     *From: *vrozos <mailto:[hidden email]>
>     *Sent: *Wednesday, March 6, 2019 3:40 PM
>     *To: *[hidden email] <mailto:[hidden email]>
>     *Subject: *Working on nnet package
>
>     The development of the NNET package by the original author,
>     Michael Schmid,
>
>     stopped in 2010. Three years ago Francesco Faccio [1] volunteered to
>
>     continue the development. However, NNET is still stuck on version
>     0.1.13,
>
>     Last Release Date: 2010-12-02. As a result, the recent changes in
>     Octave and
>
>     the deprecation of some functions (e.g. finite) have render this
>     package
>
>     broken. This is a shame. NNET is not state of the art, but it is
>     the only
>
>     readily available option for NN in Octave. Currently, it is
>     useless to the
>
>     average Octave user only because of some very minor issues.
>
>     I would like to contribute to this package doing some minor
>     development
>
>     regarding the amount of work, but critical regarding the
>     functionality (e.g.
>
>     replace deprecated functions and symbols, improve documents, etc.).
>
>     I am familiar with Mercurial and Github, but I don't know how
>     Sourceforge
>
>     works.
>
>     Regards
>
>     Evangelos Rozos
>
>     [1]
>
>     http://octave.1599824.n4.nabble.com/Working-on-nnet-package-td4681048.html
>
>     --
>
>     Sent from:
>     http://octave.1599824.n4.nabble.com/Octave-Maintainers-f1638794.html
>
>
>
> --
> DASCertificate for 206392
>

Reply | Threaded
Open this post in threaded view
|

Re: Working on nnet package

Alois Schloegl-7
On 4/10/19 8:34 PM, Evangelos Rozos wrote:
> Will anyone advice me what should I do to become the maintainer of
> this package?
>
Disclaimer, I'm not a maintainer of Octave or Octave-forge; so I'm not
in the position to give you an authoritative answer to that. However, I
can contribute my own thoughts on this.

Concern your question, I'd answer this in the following way: As a
maintainer, you need to be able to deliver. In this case, deliver an
improved version of nnet, that is somehow *useful to others*.

Concerning the topic of ANN, machine learning, etc., there are a few
things to consider. As maintainer of the NaN-toolbox (A statistics and
*machine learning* toolbox ...), I do have a few thoughts on that topic,
which you might consider or ignore. You should consider that between
2010 and today, there was a big shift in ML, that is "Deep Learning"
(DL). DL uses Neural Networks of course, but nowadays, there are
powerful DL frameworks around. IMHO, I'd give it a second thought
whether you really want to re-implement ANN's in order to set up just
another DL framework. The level of sophistication in these frameworks is
very high, any new implementation can hardly compete there. Moreover,
you might also want to exchange (pre-trained) Deep learning models with
other frameworks.

A much more promising approach seems incorporating some open sourced
Deep Learning framework into Octave. E.g. setting up an interface to
Tensorflow or ONNX through mex/oct C/C++ interface would be an
interesting task. Looking at the c_api of TF 1.13, it seems that one
need to get familiar with dataflow graphs, and protobuf, etc. Matlab
uses ONNX, so for compatibility one might use ONNX; otoh, Google's
Tensorflow seems to be technologically more advanced, therefore, I'd go
with a mex interface to tensorflow. It's certainly not a trivial
project, but it should be possible. There are already TF interfaces for
a number of other languages, so way not Octave as well.


Best,

  Alois


P.S.: Some experimental code for a mex-interface to Tensorflow is
available here:

   https://sourceforge.net/p/octave/NaN/ci/default/tree/src/mexTF.c

Feel free to continue from here. 



Mae
Reply | Threaded
Open this post in threaded view
|

Re: Working on nnet package

Mae

> On  11, 2019, at 18:42, Alois Schlögl <[hidden email]> wrote:
>
> On 4/10/19 8:34 PM, Evangelos Rozos wrote:
>> Will anyone advice me what should I do to become the maintainer of
>> this package?
>>
> Disclaimer, I'm not a maintainer of Octave or Octave-forge; so I'm not
> in the position to give you an authoritative answer to that. However, I
> can contribute my own thoughts on this.
>
> Concern your question, I'd answer this in the following way: As a
> maintainer, you need to be able to deliver. In this case, deliver an
> improved version of nnet, that is somehow *useful to others*.
>
> Concerning the topic of ANN, machine learning, etc., there are a few
> things to consider. As maintainer of the NaN-toolbox (A statistics and
> *machine learning* toolbox ...), I do have a few thoughts on that topic,
> which you might consider or ignore. You should consider that between
> 2010 and today, there was a big shift in ML, that is "Deep Learning"
> (DL). DL uses Neural Networks of course, but nowadays, there are
> powerful DL frameworks around. IMHO, I'd give it a second thought
> whether you really want to re-implement ANN's in order to set up just
> another DL framework. The level of sophistication in these frameworks is
> very high, any new implementation can hardly compete there. Moreover,
> you might also want to exchange (pre-trained) Deep learning models with
> other frameworks.
>
> A much more promising approach seems incorporating some open sourced
> Deep Learning framework into Octave. E.g. setting up an interface to
> Tensorflow or ONNX through mex/oct C/C++ interface would be an
> interesting task. Looking at the c_api of TF 1.13, it seems that one
> need to get familiar with dataflow graphs, and protobuf, etc. Matlab
> uses ONNX, so for compatibility one might use ONNX; otoh, Google's
> Tensorflow seems to be technologically more advanced, therefore, I'd go
> with a mex interface to tensorflow. It's certainly not a trivial
> project, but it should be possible. There are already TF interfaces for
> a number of other languages, so way not Octave as well.
>
>
> Best,
>
>   Alois
>
>
> P.S.: Some experimental code for a mex-interface to Tensorflow is
> available here:
>
>    https://sourceforge.net/p/octave/NaN/ci/default/tree/src/mexTF.c
>
> Feel free to continue from here.
>
>
>

As a person who uses pytorch for experimental deep learning experiments it also is an attractive target which seems to be the most popular (at least in research) in recent months.
Reply | Threaded
Open this post in threaded view
|

Re: Working on nnet package

Mike Miller-4
On Thu, Apr 11, 2019 at 19:05:09 -0400, Mae wrote:

>
> > On  11, 2019, at 18:42, Alois Schlögl <[hidden email]> wrote:
> >
> > A much more promising approach seems incorporating some open sourced
> > Deep Learning framework into Octave. E.g. setting up an interface to
> > Tensorflow or ONNX through mex/oct C/C++ interface would be an
> > interesting task. Looking at the c_api of TF 1.13, it seems that one
> > need to get familiar with dataflow graphs, and protobuf, etc. Matlab
> > uses ONNX, so for compatibility one might use ONNX; otoh, Google's
> > Tensorflow seems to be technologically more advanced, therefore, I'd go
> > with a mex interface to tensorflow. It's certainly not a trivial
> > project, but it should be possible. There are already TF interfaces for
> > a number of other languages, so way not Octave as well.
>
> As a person who uses pytorch for experimental deep learning experiments
> it also is an attractive target which seems to be the most popular (at
> least in research) in recent months.

It should be possible to use either TensorFlow or PyTorch directly today
with Octave and the Python interface. I have not worked with either, but
just glancing at a tutorial, the following works in Octave for me

    >> x1 = py.tensorflow.constant(py.list([1, 2, 3, 4]));
    >> x2 = py.tensorflow.constant(py.list([5, 6, 7, 8]));
    >> result = py.tensorflow.multiply(x1, x2);
    >> session = py.tensorflow.Session();
    >> session.run(result)
    ans = [Python object of type numpy.ndarray]
   
      [ 5. 12. 21. 32.]
   
    >> session.close()

I would be happy to work with anyone interested to develop better
motivating examples that can demonstrate how to leverage these popular
Python libraries in Octave.

--
mike

Reply | Threaded
Open this post in threaded view
|

Re: Working on nnet package

Marius Schamschula-5
>
> On Apr 11, 2019, at 6:25 PM, Mike Miller <[hidden email]> wrote:
>
> On Thu, Apr 11, 2019 at 19:05:09 -0400, Mae wrote:
>>
>>> On  11, 2019, at 18:42, Alois Schlögl <[hidden email]> wrote:
>>>
>>> A much more promising approach seems incorporating some open sourced
>>> Deep Learning framework into Octave. E.g. setting up an interface to
>>> Tensorflow or ONNX through mex/oct C/C++ interface would be an
>>> interesting task. Looking at the c_api of TF 1.13, it seems that one
>>> need to get familiar with dataflow graphs, and protobuf, etc. Matlab
>>> uses ONNX, so for compatibility one might use ONNX; otoh, Google's
>>> Tensorflow seems to be technologically more advanced, therefore, I'd go
>>> with a mex interface to tensorflow. It's certainly not a trivial
>>> project, but it should be possible. There are already TF interfaces for
>>> a number of other languages, so way not Octave as well.
>>
>> As a person who uses pytorch for experimental deep learning experiments
>> it also is an attractive target which seems to be the most popular (at
>> least in research) in recent months.
>
> It should be possible to use either TensorFlow or PyTorch directly today
> with Octave and the Python interface. I have not worked with either, but
> just glancing at a tutorial, the following works in Octave for me
>
>>> x1 = py.tensorflow.constant(py.list([1, 2, 3, 4]));
>>> x2 = py.tensorflow.constant(py.list([5, 6, 7, 8]));
>>> result = py.tensorflow.multiply(x1, x2);
>>> session = py.tensorflow.Session();
>>> session.run(result)
>    ans = [Python object of type numpy.ndarray]
>
>      [ 5. 12. 21. 32.]

For an example of how to use python with an octave package, have a look at the symbolic package, it uses python and sympy.

>>> session.close()
>
> I would be happy to work with anyone interested to develop better
> motivating examples that can demonstrate how to leverage these popular
> Python libraries in Octave.
>
> --
> mike
>

Marius
--
Marius Schamschula