提交 add20871 authored 作者: Razvan Pascanu's avatar Razvan Pascanu

merge no conflict

...@@ -2,38 +2,59 @@ ...@@ -2,38 +2,59 @@
.. _cifar_summer_school2011_overview: .. _cifar_summer_school2011_overview:
****************************************** ========
Theano Boot Camp: CIFAR Summer School 2011 Schedule
****************************************** ========
Why follow this Theano Boot Camp? Theano lab sessions will be in 4 x 90 minute blocks,
--------------------------------- on the afternoons of Aug 2, 3, 5, and 6 (but not Aug 4th).
* *Explain why* Theano is a very usefull tool Day 1
* *Teach* you Theano basic -----
* *Show* how to use it on *recent machine learning* models
* *Help you* build your first recent machine learning models in Theano
* *If interest* can explain how to *easily extend Theano*
Boot Camp Overview * Show of hands - what is your background?
------------------
* Day 1:
* Overview/Motivation * Overview/Motivation
* ?!?!?show-of-hands regarding technical background questions
* python/numpy crash course * python/numpy crash course
* Theano beggining * Theano beggining
* Example with recent ML models (DLT) * Example with recent ML models (DLT)
day 1:
I think that I could cover those 2 pages:
* http://deeplearning.net/software/theano/hpcs2011_tutorial/introduction.html
* http://deeplearning.net/software/theano/hpcs2011_tutorial/theano.html
That include:
simple example
linear regression example with shared var
theano flags
grad detail
Symbolic variables
gpu
benchmarck
Day 2
-----
* Day 2: * Day 2:
* Loop/Condition in Theano (10-20m) * Loop/Condition in Theano (10-20m)
* Propose/discuss projects * Propose/discuss projects
* For groups and start projects! * For groups and start projects!
Day 3
-----
* Day 3: * Day 3:
* Advanced Theano(30 minutes) * Advanced Theano(30 minutes)
* Debuging, profiling, compilation pipeline, inplace optimization * Debuging, profiling, compilation pipeline, inplace optimization
* Projects / General hacking / code-sprinting. * Projects / General hacking / code-sprinting.
Day 4
-----
* Day 4: *You choose* (we can split the group) * Day 4: *You choose* (we can split the group)
* Extending Theano or * Extending Theano or
* How to wrap code in an op * How to wrap code in an op
...@@ -42,15 +63,3 @@ Boot Camp Overview ...@@ -42,15 +63,3 @@ Boot Camp Overview
day 1:
I think that I could cover those 2 pages:
* http://deeplearning.net/software/theano/hpcs2011_tutorial/introduction.html
* http://deeplearning.net/software/theano/hpcs2011_tutorial/theano.html
That include:
simple example
linear regression example with shared var
theano flags
grad detail
Symbolic variables
gpu
benchmarck
.. _index: .. _index:
========================= =========================================
GPU programming made Easy TheanoLab @ NCAP CIFAR Summer School 2011
========================= =========================================
Aug 2-6, 2011, Toronto, Canada.
Theano is python software for evaluating complicated array expressions.
What does it do?
* aggressive expression optimizations,
* automatic GPU use, and
* symbolic differentiation.
It complements the Python numeric/scientific software stack (e.g. numpy, scipy,
scikits, matplotlib, PIL.)
Design and feature set has been driven by research in the machine learning group at the University of
Montreal (Yoshua Bengio, Pascal Vincent, Douglas Eck).
Result: a very good library for doing research in deep
learning and neural network training, and a flexible framework for
many other models and algorithms in machine learning more generally.
It has proven to be useful for implementing:
- linear and nonlinear neural network classifiers
- convolutional models
- Energy models: RBM, DBN, GRBM, ssRBM, AIS
- Auto-encoders: DAE, CAE
- GP regression
- sparse coding
- recurrent neural networks, echo state, (HMM?)
- online and batch learning and optimization
As people's needs change this list will grow, but Theano is built around vector,
matrix, and tensor expressions; there is little reason to use it for
calculations on other data structures.
Contents
--------
The structured part of the course will be a walk-through of the following
material. Interleaved with this structured part will be blocks of time for
individual or group work. The idea is that you can try out Theano and get help
from gurus on hand if you get stuck.
.. toctree:: .. toctree::
......
...@@ -6,19 +6,115 @@ ...@@ -6,19 +6,115 @@
Introduction Introduction
************ ************
Theano motivations Background Questionaire
-----------------------
* Who has used Theano before?
* What did you do with it?
* Who has used Python? numpy? scipy? matplotlib?
* Who has used iPython?
* Who has used it as a distributed computing engine?
* Who has done C/C++ programming?
* Who has organized computation around a particular physical memory layout?
* Who has used a multidimensional array of >2 dimensions?
* Who has written a Python module in C before?
* Who has written a program to *generate* Python modules in C?
* Who has used a templating engine?
* Who has programmed a GPU before?
* Using OpenGL / shaders ?
* Using CUDA (runtime? / driver?)
* Using PyCUDA ?
* Using OpenCL / PyOpenCL ?
* Other?
* Who has used Cython?
Python in one slide
-------------------
Features:
- General-purpose high-level OO interpreted language
- Emphasizes code readability
- Comprehensive standard library
- Dynamic type and memory management
Language things:
- Indentation for block delimiters
- Dictionary ``d={'var1':'value1', 'var2':42, ...}``
- List comprehension: ``[i+3 for i in range(10)]``
.. code-block: python
a = {'a': 5, 'b': None} # dictionary of two elements
b = [1,2,3] # list of three int literals
def foo(b, c=3): # function w default param c
return a + b + c # note scoping, indentation
Numpy in one slide
------------------ ------------------
Theano tries to be the **holy grail** in computing: *easy to code* and *it fast to execute* !
It works only on mathematical expressions, so you won't have: - Numpy provides a N-dimensional numeric array in Python
- Well known basis for scientific computing
- provides:
- elementwise computations
- linear algebra, Fourier transforms
- pseudorandom numbers from many distributions
- Base scientific computing package in Python on the CPU
- A powerful N-dimensional array object
- ndarray.{ndim, shape, size, dtype, itemsize, stride}
- Sophisticated broadcasting functions
- ``numpy.random.rand(4,5) * numpy.random.rand(1,5)`` -> mat(4,5)
- ``numpy.random.rand(4,5) * numpy.random.rand(4,1)`` -> mat(4,5)
- ``numpy.random.rand(4,5) * numpy.random.rand(5)`` -> mat(4,5)
- Tools for integrating C/C++ and Fortran code
- Linear algebra, Fourier transform and pseudorandom number generation
What's missing?
---------------
.. :
Theano tries to be the **holy grail** in computing: *easy to code* and *it fast to execute* !
It works only on mathematical expressions, so you won't have:
- Function call inside a theano function - Function call inside a theano function
- Structure, enum - Structure, enum
- Dynamic type (Theano is Fully typed) - Dynamic type (Theano is Fully typed)
Unfortunately it doesn't do coffee... yet. Unfortunately it doesn't do coffee... yet.
.. image:: pics/Caffeine_Machine_no_background_red.png .. image:: pics/Caffeine_Machine_no_background_red.png
Theano status Theano status
...@@ -117,34 +213,3 @@ Theano vs PyCUDA vs PyOpenCL vs CUDA ...@@ -117,34 +213,3 @@ Theano vs PyCUDA vs PyOpenCL vs CUDA
- PyOpenCL (Python + OpenCL) - PyOpenCL (Python + OpenCL)
- PyCUDA for OpenCL - PyCUDA for OpenCL
Python
------
- Interpreted language
- General-purpose high-level programming language
- OO and scripting language
- Emphasizes code readability
- Large and comprehensive standard library
- Indentation for block delimiters
- Dynamic type and memory management
- Dictionary ``d={'var1':'value1', 'var2':42, ...}``
- List comprehension: ``[i+3 for i in range(10)]``
NumPy
-----
- Base scientific computing package in Python on the CPU
- A powerful N-dimensional array object
- ndarray.{ndim, shape, size, dtype, itemsize, stride}
- Sophisticated broadcasting functions
- ``numpy.random.rand(4,5) * numpy.random.rand(1,5)`` -> mat(4,5)
- ``numpy.random.rand(4,5) * numpy.random.rand(4,1)`` -> mat(4,5)
- ``numpy.random.rand(4,5) * numpy.random.rand(5)`` -> mat(4,5)
- Tools for integrating C/C++ and Fortran code
- Linear algebra, Fourier transform and pseudorandom number generation
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论