User:Enricobertino: Difference between revisions
Jump to navigation
Jump to search
(9 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
*:It is an interesting project, followed by competent mentors and supported by a great organization. I can not ask for more for entering the open-source world :) | *:It is an interesting project, followed by competent mentors and supported by a great organization. I can not ask for more for entering the open-source world :) | ||
** Please also describe your previous experience with the GSoC, if any. | ** Please also describe your previous experience with the GSoC, if any. | ||
**: | **:It is the first time for me! | ||
* Why are you choosing Octave? | * Why are you choosing Octave? | ||
*:I am quite a fan of open source projects, open innovation and expertise sharing. In recent months I have been working on a Python framework for natural language processing and I want to open it asap. I like this same spirit under the Octave project. | *:I am quite a fan of open source projects, open innovation and expertise sharing. In recent months I have been working on a Python framework for natural language processing and I want to open it asap. I like this same spirit under the Octave project. | ||
== C: Contact == | == C: Contact == | ||
Line 19: | Line 19: | ||
*:nick: '''enricobertino''' | *:nick: '''enricobertino''' | ||
* Which time zone do you live in? Will that change over GSoC duration? | * Which time zone do you live in? Will that change over GSoC duration? | ||
*:UTC+1, | *:UTC+1, Italy. The time zone will not change | ||
* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? | * Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? | ||
*:I usually code in the time span | *:I usually code in the time span 7.00 - 19.00 (UTC+0). Since I have not restrictive work commitments, I am flexible to code also in other moments. I just need some time to sleep :) | ||
== E: Coding experience == | == E: Coding experience == | ||
Line 30: | Line 30: | ||
*:I’m very familiar with Python and R, the two most common languages for statisticians. I have also some experience in Java and PHP. | *:I’m very familiar with Python and R, the two most common languages for statisticians. I have also some experience in Java and PHP. | ||
* Please describe your experience with being in a development team. | * Please describe your experience with being in a development team. | ||
*: | *:I worked in a tech startup and I had to collaborate with other 5 developers who have different academic profiles and different skills . We have structured the code from scratch and the process can be likened to a package development. | ||
* Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time. | * Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time. | ||
*:When I was at INRIA in France, I implemented a Godunov’s scheme to resolve stochastic conservation laws in modeling highway traffic. In the | *:# '''Octave''': When I was at INRIA in France, I implemented a Godunov’s scheme to resolve stochastic conservation laws in modeling highway traffic. I started with the implementation of a deterministic method, fitting the parameters from real data gathered from a gps company. In this phase I learned to deal with data input and storage problems. In the second part of the project I modeled a stochastic version of the method with an optimized multidimensional Monte-Carlo approach, which gave me some expertise about computational optimization. | ||
*:# '''Python''': As part of a machine learning exam, I I have participated with other classmates to a Kaggle competition which consisted in the prediction of the outcomes of shelter animals adoptions. Since we were five in the group, I learned the fundamental basis of team development. We used both mathematical and programming skills and we reached the third place worldwide. | |||
*:# '''C++''': During a master project I had to implement a Biham-Middleton-Levine traffic model in C++. Long story short, it consisted in some tricky operations on a matrix. I learned to deal with Eigen, sparse matrices and heritage. At the beginning we coded a fancy structure based on polymorphism, but since the goal of the project was only the rapidity of the code, we rewrite every class in order to optimize the computational time. We implemented also two parallelized versions of the code, with OpenMP and MPI, and the results were highly satisfactory. | |||
*: The first project was private, but I pushed the other two on a [https://github.com/cittiberto/ github repository]. | |||
* Please state the commits and patches you already contributed to Octave. | * Please state the commits and patches you already contributed to Octave. | ||
*: | *: In order to familiarize with Octave patches, I posted a patch for nnet package ([https://savannah.gnu.org/patch/?func=detailitem&item_id=9285 link patch]). I’m currently working on some Pytave bugs. | ||
== F: Feeling fine == | == F: Feeling fine == | ||
Line 41: | Line 44: | ||
**:I am starting to discover the Octave “ecosystem” and to be comfortable using the mailing list and IRC | **:I am starting to discover the Octave “ecosystem” and to be comfortable using the mailing list and IRC | ||
** Mercurial or other source code management systems | ** Mercurial or other source code management systems | ||
**:I’m very familiar with Git | **:I’m very familiar with Git and I have just started with Mercurial | ||
** Mediawiki or other wiki software | ** Mediawiki or other wiki software | ||
**: | **:I am discovering it right now :) | ||
** make, gcc, gdb or other development tools | ** make, gcc, gdb or other development tools | ||
**: | **:I am quite familiar with make and gcc, less with gdb | ||
* What will make you actively stay in our community after this GSoC is over? | * What will make you actively stay in our community after this GSoC is over? | ||
*: | *:I plan to keep on with research in university, beginning with my master thesis next year. Since I plan to use Octave during that period, it will be very useful to give a point of view in the other direction. | ||
== O: Only out of interest == | == O: Only out of interest == | ||
* Did you ever hear about Octave before? | * Did you ever hear about Octave before? | ||
*:Of course | *:Of course, since I heard about of MATLAB :) | ||
** If so, when and where? How far have you been involved already? | ** If so, when and where? How far have you been involved already? | ||
**:Until three years ago I | **:Until three years ago I mostly used Matlab since it was the common choice at the university. After that I focus more on Octave because I was in a researcher lab and I started to prefer free softwares. | ||
* What was the first question concerning Octave you could not find an answer to rather quickly? | * What was the first question concerning Octave you could not find an answer to rather quickly? | ||
*:As | *:As a user, I do not remember a question that was difficult to answer. As a developer, I am "fighting" with pytave and soon I will need to ask a lot of information! | ||
== P: Prerequisites == | == P: Prerequisites == | ||
Line 64: | Line 67: | ||
* Please estimate an average time per day you will be able to access | * Please estimate an average time per day you will be able to access | ||
** an internet connection | ** an internet connection | ||
**: 24 | **: 24 hours a day | ||
** a computer | ** a computer | ||
**: 24 | **: 24 hours a day | ||
** a computer with your progressing work on | ** a computer with your progressing work on | ||
**:24 | **:24 hours a day | ||
* Please describe the degree to which you can install new software on computers you have access to. | * Please describe the degree to which you can install new software on computers you have access to. | ||
*:Full permissions | *:Full permissions since I use my own machines | ||
== S: Self-assessment == | == S: Self-assessment == | ||
* Please describe how useful criticism looks from your point of view as committing student. | * Please describe how useful criticism looks from your point of view as committing student. | ||
*: | *:I think they are indispensable! Without external point of view is very likely to get stuck in a problem because unable to see other paths. And criticism is one of the most effective form of point of view sharing. | ||
* How autonomous are you when developing: | * How autonomous are you when developing: | ||
** Do you like to discuss changes intensively and not start coding until you know what you want to do? | ** Do you like to discuss changes intensively and not start coding until you know what you want to do? | ||
Line 87: | Line 90: | ||
* Please provide a rough estimated timeline for your work on the task. | * Please provide a rough estimated timeline for your work on the task. | ||
*: '''05/05 - 30/05''' (community bonding period) | *: '''05/05 - 30/05''' (community bonding period) | ||
*:: '''Week 1''' | *:: ''' ''Week 1'' ''' | ||
*::: - Begin to stay in contact and familiarize with the community, using both the mailing list and the IRC channel. | *::: - Begin to stay in contact and familiarize with the community, using both the mailing list and the IRC channel. | ||
*::: - Improve expertise with tools like Mercurial and autotools | *::: - Improve expertise with tools like Mercurial and autotools | ||
*::: - Read Matlab doc of Neural Network Toolbox classes and basic functions, with a focus on the deep learning part about CNNs | *::: - Read Matlab doc of Neural Network Toolbox classes and basic functions, with a focus on the deep learning part about CNNs | ||
*:: '''Week 2''' | *:: ''' ''Week 2'' ''' | ||
*::: - Deeply analyze both Python and C++ Tensorflow APIs in order to figure out the best path to follow | *::: - Deeply analyze both Python and C++ Tensorflow APIs in order to figure out the best path to follow | ||
*::: - Install and run Pytave. Read the doc if provided or exchange with the maintainers | *::: - Install and run Pytave. Read the doc if provided or exchange with the maintainers | ||
*:: '''Week 3''' | *:: ''' ''Week 3'' ''' | ||
*::: - Test Pytave and figure out there is some bug or missing feature of the specific part that we need. | *::: - Test Pytave and figure out there is some bug or missing feature of the specific part that we need. | ||
*::: - Fix potential bugs or submit new patches | *::: - Fix potential bugs or submit new patches | ||
*::: - Figure out if we need some object programming in Octave (like classdef) and test it | *::: - Figure out if we need some object programming in Octave (like classdef) and test it | ||
*: '''30/05 - 30/06''' (Phase 1) | *: '''30/05 - 30/06''' (Phase 1) | ||
*:: '''Week 4,5''' | *:: ''' ''Week 4,5'' ''' | ||
*::: - Work on the makefile in order to link TF in either Python or C++ and test | *::: - Work on the makefile in order to link TF in either Python or C++ and test some basic nets with TF | ||
*:: '''Week 6,7''' | *:: ''' ''Week 6,7'' ''' | ||
*::: - Write all the Octave classes for every layer and use corresponding TF functions. Because of the focus on Matlab Nnet Toolbox, we will start to define the fundamental layers used for CNNs : Convolutional layer, ReLU layer, Normalization layer, Average pooling layer object, Max pooling layer, Fully connected layer, Dropout layer, Softmax layer, Classification output layer, Regression output layer | *::: - Write all the Octave classes for every layer and use corresponding TF functions. Because of the focus on Matlab Nnet Toolbox, we will start to define the fundamental layers used for CNNs : Convolutional layer, ReLU layer, Normalization layer, Average pooling layer object, Max pooling layer, Fully connected layer, Dropout layer, Softmax layer, Classification output layer, Regression output layer | ||
*:: '''Week 8''' | *:: ''' ''Week 8'' ''' | ||
*::: - Implement a draft of the training functions (seriesNetwork object, trainNetwork, trainingOptions) without all options and parameters | *::: - Implement a draft of the training functions (seriesNetwork object, trainNetwork, trainingOptions) without all options and parameters | ||
*: '''01/07 - 28/07''' (Phase 2) | *: '''01/07 - 28/07''' (Phase 2) | ||
*:: '''Week 9-10-11-12''' | *:: ''' ''Week 9-10'' ''' | ||
*::: - Implement a complete working version of | *::: - Implement a complete working version of seriesNetwork (including definition of methods like activations, classify and predict) | ||
*:: ''' ''Week 11'' ''' | |||
*::: - Implement a complete working version of trainNetwork | |||
*:: ''' ''Week 12'' ''' | |||
*::: - Implement a complete working version of trainingOptions | |||
*: '''28/07 - 25/08''' (Final phase) | *: '''28/07 - 25/08''' (Final phase) | ||
*:: '''Week 13''' | *:: ''' ''Week 13'' ''' | ||
*::: - Able the parallelization and analyze CUDA integration | *::: - Able the parallelization and analyze CUDA integration | ||
*:: '''Week 14''' | *:: ''' ''Week 14-15'' ''' | ||
*::: - Implementation of a cool application like deepDreamImage and (if some time is left) more advanced nets like (AlexNet, vgg16, vgg19) | *::: - Implementation of a cool application like deepDreamImage and (if some time is left) more advanced nets like (AlexNet, vgg16, vgg19) | ||
*:: '''Week | *:: ''' ''Week 16'' ''' | ||
*::: - As a bonus if some time is left, try to implement ImageDatastore in order to manage seamless the image import | *::: - As a bonus if some time is left, try to implement ImageDatastore in order to manage seamless the image import | ||
*: All tests and documentation will be written during the whole period, simultaneously with every function. Both BIST tests and doc tests will be written, along with Python unit tests. | *: All tests and documentation will be written during the whole period, simultaneously with every function. Both BIST tests and doc tests will be written, along with Python unit tests. |
Latest revision as of 16:15, 31 March 2017
Public application[edit]
A: An introduction[edit]
- Please describe yourself in three sentences, one of them regarding your current studies.
- I’m Enrico Bertino, an Italian student. After a BSc in mathematical engineering in Politecnico di Milano and a MSc in France, I enrolled in the MSc major Statistics with specialization in big data in Politecnico di Milano and I’m now finishing the last year.
- Which languages do you speak?
- I speak Italian and French (native) and English (fluent)
- What's your overall background?
- In the past I spent six months as a researcher in fluid dynamics, programming mostly in Octave. For two years now I have been more passionated about applied statistics, with focus on deep learning and Bayesian approach.
- Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
- It is an interesting project, followed by competent mentors and supported by a great organization. I can not ask for more for entering the open-source world :)
- Please also describe your previous experience with the GSoC, if any.
- It is the first time for me!
- Why are you choosing Octave?
- I am quite a fan of open source projects, open innovation and expertise sharing. In recent months I have been working on a Python framework for natural language processing and I want to open it asap. I like this same spirit under the Octave project.
C: Contact[edit]
- Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
- nick: enricobertino
- Which time zone do you live in? Will that change over GSoC duration?
- UTC+1, Italy. The time zone will not change
- Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
- I usually code in the time span 7.00 - 19.00 (UTC+0). Since I have not restrictive work commitments, I am flexible to code also in other moments. I just need some time to sleep :)
E: Coding experience[edit]
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)
- Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
- I have worked with Matlab and Octave for a long time, in particular with numerical methods for PDEs and statistical analysis. I have a considerable experience with C++ since it is the most used language in my master exams.
- Please describe your experience with other programming languages.
- I’m very familiar with Python and R, the two most common languages for statisticians. I have also some experience in Java and PHP.
- Please describe your experience with being in a development team.
- I worked in a tech startup and I had to collaborate with other 5 developers who have different academic profiles and different skills . We have structured the code from scratch and the process can be likened to a package development.
- Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.
- Octave: When I was at INRIA in France, I implemented a Godunov’s scheme to resolve stochastic conservation laws in modeling highway traffic. I started with the implementation of a deterministic method, fitting the parameters from real data gathered from a gps company. In this phase I learned to deal with data input and storage problems. In the second part of the project I modeled a stochastic version of the method with an optimized multidimensional Monte-Carlo approach, which gave me some expertise about computational optimization.
- Python: As part of a machine learning exam, I I have participated with other classmates to a Kaggle competition which consisted in the prediction of the outcomes of shelter animals adoptions. Since we were five in the group, I learned the fundamental basis of team development. We used both mathematical and programming skills and we reached the third place worldwide.
- C++: During a master project I had to implement a Biham-Middleton-Levine traffic model in C++. Long story short, it consisted in some tricky operations on a matrix. I learned to deal with Eigen, sparse matrices and heritage. At the beginning we coded a fancy structure based on polymorphism, but since the goal of the project was only the rapidity of the code, we rewrite every class in order to optimize the computational time. We implemented also two parallelized versions of the code, with OpenMP and MPI, and the results were highly satisfactory.
- The first project was private, but I pushed the other two on a github repository.
- Please state the commits and patches you already contributed to Octave.
- In order to familiarize with Octave patches, I posted a patch for nnet package (link patch). I’m currently working on some Pytave bugs.
F: Feeling fine[edit]
- Please describe (in short) your experience with the following tools:
- IRC and mailing lists
- I am starting to discover the Octave “ecosystem” and to be comfortable using the mailing list and IRC
- Mercurial or other source code management systems
- I’m very familiar with Git and I have just started with Mercurial
- Mediawiki or other wiki software
- I am discovering it right now :)
- make, gcc, gdb or other development tools
- I am quite familiar with make and gcc, less with gdb
- IRC and mailing lists
- What will make you actively stay in our community after this GSoC is over?
- I plan to keep on with research in university, beginning with my master thesis next year. Since I plan to use Octave during that period, it will be very useful to give a point of view in the other direction.
O: Only out of interest[edit]
- Did you ever hear about Octave before?
- Of course, since I heard about of MATLAB :)
- If so, when and where? How far have you been involved already?
- Until three years ago I mostly used Matlab since it was the common choice at the university. After that I focus more on Octave because I was in a researcher lab and I started to prefer free softwares.
- What was the first question concerning Octave you could not find an answer to rather quickly?
- As a user, I do not remember a question that was difficult to answer. As a developer, I am "fighting" with pytave and soon I will need to ask a lot of information!
P: Prerequisites[edit]
- Please state the operating system you work with.
- Ubuntu and macOS
- If you have access to more than one, please state them and the conditions under which you are granted this access.
- Direct access to macOS and ssh access to Ubuntu, always available.
- Please estimate an average time per day you will be able to access
- an internet connection
- 24 hours a day
- a computer
- 24 hours a day
- a computer with your progressing work on
- 24 hours a day
- an internet connection
- Please describe the degree to which you can install new software on computers you have access to.
- Full permissions since I use my own machines
S: Self-assessment[edit]
- Please describe how useful criticism looks from your point of view as committing student.
- I think they are indispensable! Without external point of view is very likely to get stuck in a problem because unable to see other paths. And criticism is one of the most effective form of point of view sharing.
- How autonomous are you when developing:
- Do you like to discuss changes intensively and not start coding until you know what you want to do?
- In general I like to start coding when everybody shares a final decision.
- Do you like to code a proof of concept to 'see how it turns out'?
- I love to test things so often I want to have a little version of something which works and then analyze the whole problem.
- Do you like to discuss changes intensively and not start coding until you know what you want to do?
Y: Your task[edit]
- Did you select a task from our list of proposals and ideas?
- Yes, I would like to work on the project: "Neural_Networks_package” Wiki link to the project
- Please provide a rough estimated timeline for your work on the task.
- 05/05 - 30/05 (community bonding period)
- Week 1
- - Begin to stay in contact and familiarize with the community, using both the mailing list and the IRC channel.
- - Improve expertise with tools like Mercurial and autotools
- - Read Matlab doc of Neural Network Toolbox classes and basic functions, with a focus on the deep learning part about CNNs
- Week 2
- - Deeply analyze both Python and C++ Tensorflow APIs in order to figure out the best path to follow
- - Install and run Pytave. Read the doc if provided or exchange with the maintainers
- Week 3
- - Test Pytave and figure out there is some bug or missing feature of the specific part that we need.
- - Fix potential bugs or submit new patches
- - Figure out if we need some object programming in Octave (like classdef) and test it
- Week 1
- 30/05 - 30/06 (Phase 1)
- Week 4,5
- - Work on the makefile in order to link TF in either Python or C++ and test some basic nets with TF
- Week 6,7
- - Write all the Octave classes for every layer and use corresponding TF functions. Because of the focus on Matlab Nnet Toolbox, we will start to define the fundamental layers used for CNNs : Convolutional layer, ReLU layer, Normalization layer, Average pooling layer object, Max pooling layer, Fully connected layer, Dropout layer, Softmax layer, Classification output layer, Regression output layer
- Week 8
- - Implement a draft of the training functions (seriesNetwork object, trainNetwork, trainingOptions) without all options and parameters
- Week 4,5
- 01/07 - 28/07 (Phase 2)
- Week 9-10
- - Implement a complete working version of seriesNetwork (including definition of methods like activations, classify and predict)
- Week 11
- - Implement a complete working version of trainNetwork
- Week 12
- - Implement a complete working version of trainingOptions
- Week 9-10
- 28/07 - 25/08 (Final phase)
- Week 13
- - Able the parallelization and analyze CUDA integration
- Week 14-15
- - Implementation of a cool application like deepDreamImage and (if some time is left) more advanced nets like (AlexNet, vgg16, vgg19)
- Week 16
- - As a bonus if some time is left, try to implement ImageDatastore in order to manage seamless the image import
- Week 13
- All tests and documentation will be written during the whole period, simultaneously with every function. Both BIST tests and doc tests will be written, along with Python unit tests.
- Clearly this is a draft, all the steps will become clearer with some discussions with the mentors.
- 05/05 - 30/05 (community bonding period)