提交 a531dee6 authored 作者: Pascal Lamblin's avatar Pascal Lamblin

theano summary

上级 e1dc7a29
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
\title{Theano, Pylearn2, libgpuarray Presentation} \title{Theano, Pylearn2, libgpuarray Presentation}
\author{ \author{%
\footnotesize \footnotesize
Frédéric Bastien\superscript{a}, Bart van Merriënboer\superscript{a} \newline Frédéric Bastien\superscript{a}, Bart van Merriënboer\superscript{a} \newline
\superscript{a}Département d'Informatique et de Recherche Opérationnelle \newline \superscript{a}Département d'Informatique et de Recherche Opérationnelle \newline
...@@ -163,7 +163,7 @@ Montréal, Canada \newline ...@@ -163,7 +163,7 @@ Montréal, Canada \newline
\item Datasets (MNIST, CIFAR-10) and preprocessors (LCN, ZCA) \item Datasets (MNIST, CIFAR-10) and preprocessors (LCN, ZCA)
\end{itemize} \end{itemize}
\item Experiments can be specified through a YAML config file, or by a Python script \item Experiments can be specified through a YAML config file, or by a Python script
\item Scripts for visualizing weights, plot monitored values during training \item Scripts for visualizing weights, plot monitored values
\end{itemize} \end{itemize}
\end{frame} \end{frame}
...@@ -174,9 +174,74 @@ Montréal, Canada \newline ...@@ -174,9 +174,74 @@ Montréal, Canada \newline
\section{Theano} \section{Theano}
\begin{frame}{Theano details} \begin{frame}{Description}
\begin{itemize}
\item Mathematical symbolic expression compiler
\item Expressions mimic NumPy's syntax and semantics (easier to use)
\item Dynamic C/CUDA code generation
\begin{itemize}
\item Is used with other technologie to generate fast code: C/C++, CUDA, OpenCL, PyCUDA, Cython, Numba, \ldots
\end{itemize}
\item Efficient symbolic differeniation
\begin{itemize}
\item Theano computes derivatives of functions with one or many inputs.
\item Also support computation of the Jacobian, Hessian, R and L op.
\end{itemize}
\item Speed and stability optimizations
\begin{itemize}
\item Gives the right answer for ``log(1+x)'' even if x is really tiny.
\end{itemize}
\item Works on Linux, Mac and Windows
\item Transparent use of a GPU
\begin{itemize}
\item {\tt float32} only for now (working on other data types)
\item Still in experimental state on Windows
\end{itemize}
\item Extensive unit-testing and self-verification
\begin{itemize}
\item Detects and diagnoses many types of errors
\end{itemize}
% \item Statically typed and purely functional
\item Sparse operations (CPU only)
\end{itemize}
\end{frame}
\begin{frame}{Simple example}
%--------------
%
%>>> import theano
%>>> a = theano.tensor.vector("a") # declare symbolic variable
%>>> b = a + a ** 10 # build symbolic expression
%>>> f = theano.function([a], b) # compile function
%>>> print f([0, 1, 2]) # prints `array([0, 2, 1026])`
%
%
%====================================================== =====================================================
% Unoptimized graph Optimized graph
%====================================================== =====================================================
%.. image:: ../hpcs2011_tutorial/pics/f_unoptimized.png .. image:: ../hpcs2011_tutorial/pics/f_optimized.png
%====================================================== =====================================================
%
%Symbolic programming = *Paradigm shift*: people need to use it to understand it.
\end{frame} \end{frame}
\begin{frame}{Project status?} \begin{frame}{Project status?}
\begin{itemize}
\item Mature: Theano has been developed and used since January 2008 (6.5 yrs old)
\item Driven over 100 research papers
\item Good user documentation
\item Active mailing list with participants from outside our lab
\item Core technology for a few Silicon-Valley start-ups
\item Many contributors (some from outside our lab)
\item Used to teach many university classes
\item Has been used for research at Google and Yahoo.
\end{itemize}
Theano: \url{deeplearning.net/software/theano/}
Deep Learning Tutorials: \url{deeplearning.net/tutorial/}
\end{frame} \end{frame}
...@@ -205,7 +270,7 @@ Montréal, Canada \newline ...@@ -205,7 +270,7 @@ Montréal, Canada \newline
\begin{frame}{Why a new implementation?} \begin{frame}{Why a new implementation?}
\begin{block}{There are already a number of existing GPU computing codebases:} \begin{block}{There are already a number of existing GPU computing codebases:}
Theano, PyCUDA/PyOpenCL, CUDAmat, Gnumpy, Thrust, ... Theano, PyCUDA/PyOpenCL, CUDAmat, Gnumpy, Thrust, \ldots
\end {block} \end {block}
\begin{enumerate} \begin{enumerate}
\item<2-> All are incompatible, which hinders code sharing. \item<2-> All are incompatible, which hinders code sharing.
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论