Download Latest Version nn22_v2015.04.18.zip (103.4 kB)
Email in envelope

Get an email when there's a new version of nn22 Basic Neural Networks for Octave

Home
Name Modified Size InfoDownloads / Week
nn22_v2015.04.18 2015-04-18
nn22_v2015.03.31 2015-04-17
README.txt 2015-04-18 6.8 kB
nn22_v2015.04.18.zip 2015-04-18 103.4 kB
nn22_v2015.03.31.zip 2015-04-01 104.4 kB
nn22_Course_Project_Report_INAUT_2014_(spanish).pdf 2015-03-24 2.3 MB
Totals: 6 Items   2.5 MB 0
nn22 - Basic Neural Networks for Octave (or Maltlab). 
-----------------------------------------------------

About nn22 Basic Neural Networks (NN) framework for Octave (or Matlab)
----------------------------------------------------------------------
nn22 is a small and basic NN framework that was built having the
following criteria in mind.
1. Function as a close-to all purpose NN framework allowing to
   define a NN with:
   a. as many layers as you want,
   b. as many neurons per layer as you want,
   c. the activation function per layer that you want,
   d. the ability to feed back as many delayed outputs as you want,
   e. the ability to delay the input vector as many times...
   f. ...and other stuff, and do so in an easy way.
2. To have its main functions logically separated and uncluttered
   so that the may be modified at will and easily understood.
3. To have all source code available at plain sight, nothing hidden
   inside an obscure library.
4. The possibility to insert 'keyboard;' breaks at any point of the
   code so that all variables and functions behavior can be
   evaluated through 'who' and commands alike.
5. To be able to run in both Octave and Matlab.
6. To serve a didactic purpose.


What nn22 is not:
-----------------
1. It is not a full featured NN framework.
2. It is not fast.
3. It is not intended to work as a commercial product does.
4. It is not even intended to pair other open source frameworks 
   available that are indeed fast and provide good results.
5. ...and this renders the previous stated objective: 
   it has a didactic purpose. And just that :)


How nn22 came to see the light?
-------------------------------
1. There is a specialization course taught by Dr. Eng. Daniel Patino at
   the INAUT institute, Universidad Nacional de San Juan, Argentina,
   called "Neural Networks Applied to System's Identification and 
   Control" ("Redes Neuronales Aplicadas a la Identificacion y Control
   de Sistemas") and belongs to INAUT's MSc and PhD programs.
2. The author of this code (that would be me, Alejandro) attended 
   professor Patino's classes.
3. One of the course's assignments was to build simple NN solutions
   for the AND, XOR, SINE, FIR and other problems, including a 
   multi-input multi-output non-linear dynamic system's identification,
   ...yes, true, that one is not that simple.
4. The author of the code got engaged and did an extra mile,
   for the sake of machine learning coding joyfulness, sort of ;)


Expected future for nn22:
-------------------------
1. To serve as a didactic means of learning the insights of NN.
2. To have some other training strategies added.
3. To grow in functions that underline its didactic purpose.


OK now,

How to use:
-----------
1. From Octave's command line load nn22.m (you may use Matlab).
2. Follow the menu indications, by either loading or creating a
   new Neural Network.
3. Data for training and testing is included in .txt files. Or you may
   create new data.
4. Adjust constants for training.
5. Train, feed the NN and plot results.
6. Spare some time understanding the code, should be 
   pretty straight forward.
7. The neural network structure is:
   a) easily modified by its .ini file.
   b) visible in the neurons data structure included in each .mat file.
8. This very simple framework is meant to provide a means to play and
   understand neural networks basics. Nothing more than that.
9. Profound knowledge of Trial and Error is a must.


Some 'advanced' how to use:
---------------------------
1. Files particular to each NN solution are included as examples and
   as templates to be modified to suit your own NN solution.
    a) and_Structure.ini
    b) and_Constantes.m
    c) and_nnData.mat
    d) and_createIOdata.m
    e) and_plotIOdata.m
    f) and_ioIdealTest.txt
    g) and_ioIdealTrain.txt
    h) and_ioInputTest.txt
    i) and_ioInputTrain.txt
    ...where 'and' should be replaced by your NN's Base Name,
    e.g.: xor, sine, fir, etc. (etc. meaning your own base name ;)
2. File a) is the .ini NN structure definition. Edit it.
3. Files b) and c) may be omitted, but if they exist, you should respect
   their existence. They may contain useful information regarding the NN :)
   If they do not exist, they will be created by the program.
4. Files d) and e) are templates and *have to* be adapted to your solution.
5. Files f) to i) are the .txt data files. If they do not exist,
   the program can create them. There is a menu option for that task...
   and it calls the function listed as file d) _createIOdata.m
   It should be easy to build your own data set for a particular solution.

One step further, extend Localization languages:
------------------------------------------------
1. There are three files that contain localization info:
    a) nn_localization.m
    b) nn_localization_en_US.m
    c) nn_localization_es_AR.m
2. File a) is called at the very beginning of nn22.m and helps the user
   to choose between files b), c), and perhaps other localized files that
   may be added in the future.
3. Files b) and c) contain the localized messages and are twin files
   with the same number of lines, containing the same structure variable
   declarations, all belonging to the 'msG' global structure, one of them
   assigns messages in English language and the other in Spanish.
4. In order to add another language you may add an edited copy of file b)
   and then add another option to file a). You may also follow the brief
   instructions included at the end of the a) file, 'nn_localization.m'.
   

   
Final comments:
---------------
The project consists of a few very simple .m files for a Basic
Neural Networks study under Octave (or Matlab).

The idea is to provide a context for beginners that will allow to
develop neural networks, while at the same time get to see and feel
the behavior of a basic neural networks' functioning.

The code is completely open to be modified and may suit several scenarios.

The code commenting is verbose, and variables and functions do respect
English formatting, so that code may be self explanatory.

Messages to the screen are localized, both in English and Spanish,
and it is really easy to add another language to the localization.

If any further explanation is needed, the forum/discussion page
may be of help :) 

Comments and suggestions are very welcome. 



Copyright statement:
--------------------
Copyright (C) 2014 Alejandro Quiroga Alsina

The copyright is made under GNU General Public License.
README.txt, COPYING.txt and LICENSE.txt files add info on this regard.
Source: README.txt, updated 2015-04-18