# HG changeset patch # User Yoshua Bengio # Date 1283480912 14400 # Node ID 2e515be92a0e6091b85e9594a8aba2d677ca7571 # Parent 49eea4953efec02e97cdb8bdaefa92e9211756a4 motivations and meeting points diff -r 49eea4953efe -r 2e515be92a0e doc/v2_planning/main_plan.txt --- a/doc/v2_planning/main_plan.txt Thu Sep 02 21:59:22 2010 -0400 +++ b/doc/v2_planning/main_plan.txt Thu Sep 02 22:28:32 2010 -0400 @@ -2,6 +2,47 @@ Motivation ========== +Yoshua (points discussed Thursday Sept 2, 2010 at LISA tea-talk) +------ + +****** Why we need to get better organized in our code-writing ****** + +- current state of affairs on top of Theano is anarchic and does not lend itself to easy code re-use +- the lab is growing and will continue to grow significantly, and more people outside the lab are using Theano +- we have new industrial partners and funding sources that demand deliverables, and more/better collectively organized efforts + +*** Who can take advantage of this *** + +- us, directly, taking advantage of the different advances made by different researchers in the lab to yield better models +- us, easier to compare different models and different datasets with different metrics on different computing platforms available to us +- future us, new students, able to quickly move into 'production' mode without having to reinvent the wheel +- students in the two ML classes, able to play with the library to explore new ML variants +- other ML researchers in academia, able to play with our algorithms, try new variants, cite our papers +- non-ML users in or out of academia, and our user-partners + + +*** Move with care *** + +- Write down use-cases, examples for each type of module, do not try to be TOO general +- Want to keep ease of exploring and flexibility, not create a prison +- Too many constraints can lead to paralysis, especially in C++ object-oriented model +- Too few guidelines lead to code components that are not interchangeable +- Poor code practice leads to buggy, spaguetti code + +*** What *** + +- define standards +- write-up a few instances of each basic type (dataset, learner, optimizer, hyper-parameter exploration boilerplate, etc.) enough to implement some of the basic algorithms we use often (e.g. like those in the tutorials) +- let the library grow according to our needs +- keep tight reins on it to control quality + +*** Content and Form *** + +We need to establish guidelines and conventions for + + * Content: what are the re-usable components? define conventions or API for each, make sure they fit with each other + * Form: social engineering, coding practices and conventions, code review, incentives + Yoshua: -------