|
Google Summer of Code
Please note that all student applications should be sent to GSoC before March 26th.
The Google Summer of Code is an exciting possibility for students to participate
in an open source project during the summer.
Who needs to be see the sun, when you can stay inside and code?
And it gets better, Google will even pay you to code,
on top of this you will be mentored by the creator of the Fast Artificial Neural Network Library (FANN), backed up by the vibrant FANN community.
The FANN library is an open source project, which has many ideas, but only a limited amount of time to implement them.
This is where YOU the student can help, by joining the Google Summer of Code project, you will be able to contribute to the FANN library,
by either implementing one of the project ideas below, or by implementing your own idea.
All questions and discussion about FANN and Google Summer of Code should be directed to the newly created
FANN Forum, this is also a great place to discuss project ideas.
|
Project Ideas:
Please see this poll to get an idea of which project idea that is the most popular, and for more idea suggestions.
Vectorizing FANN
The FANN library is made to be fast, but it can be even faster if it can utilize the ability to perform fast vector arithmetic of many modern processors.
As stated by this thread on the FANN Forum,
the real challenge when optimizing the FANN library for vectorization is making the code easy to maintain across several different
processor architectures. Please see the FANN Forum for more information.
Multi-threading FANN
The FANN library can be multi-threaded in many ways, either by training several different networks in parallel,
or by having several threads collaborate on either the training or the execution of the library.
My favorite suggestion are however:
- Train many different ANNs with different training functions and
parameters on different machines, and then only use the best of these.
Possibly use the result of several of these ANNs to gain even better
results.
- When training (only works for batch training like rprop and
quickprop), then split the training patterns in two (or more) and have
each thread calculate the error for their set of patterns,
and then combine this error to one which is used to adjust the weights.
I think that this could speed up training where very large set of
training data is used.
- Integrating with the grid.py script that comes with libsvm,
to enable the best selection of command line parameters. (This will require enhancing the command line interface to FANN).
OpenOffice.org Spreadsheet or Excel Plugin
Spreadsheets like Microsoft Excel or the OpenOffice.org Spreadsheet are great for manipulating data in all kinds of ways, so wouldn't it be
great if you could manipulate your training data directly in the spreadsheet, train from within the spreadsheet and even view the output directly in the spreadsheet.
Dynamic Alteration
It is possible to set many different parameters of the FANN library, and it is also
possible to grow the network topology dynamically using the Cascade algorithm, unfortunately it is not possible
to alter the topology of the neural network dynamically (by adding and removing neurons and layers) and it is also not possible to alter the
training data dynamically.
For this, many different functions are needed, that can help to make the the library more dynamic and flexible, it can also help
support algorithm like optimal brain damage.
Native GUI
The Flash graphical interface for FANN is great, but most users would much rather like an GUI that will run natively on the machine.
This is a great project for anyone with a creative soul, who would like to create a truly usable piece of software.
Recurrent Neural Networks and Kohonen Maps
The FANN library supports a variety of different neural network models, but the popular recurrent neural networks an Kohonen maps are not supported.
Training Algorithms
There is a lot of different training algorithms for neural networks, and the FANN library has only implemented a few of them.
All new algorithms are a welcome addition.
Bindings
There are bindings to the FANN library from many different programming languages, but new languages are always welcome,
and some of the bindings could also need a good update and rewrite to fully support version 2 of the FANN library.
Get More Ideas
If you have ideas of your own, please feel free to propose them. You can also take a look in the
Feature Request System, on the
Ideas thread of the FANN Forum or in the
FANN Mailing list archives.
|
|
|