Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pytensor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
testgroup
pytensor
Commits
eb513f7c
提交
eb513f7c
authored
3月 30, 2009
作者:
Olivier Breuleux
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
splitted some topics into advanced, updated advanced tutorial
上级
de95e004
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
156 行增加
和
140 行删除
+156
-140
ccodegen.txt
doc/advanced/ccodegen.txt
+0
-0
compilation.txt
doc/advanced/compilation.txt
+0
-0
env.txt
doc/advanced/env.txt
+0
-0
features.txt
doc/advanced/features.txt
+0
-0
module.txt
doc/advanced/module.txt
+0
-0
optimization.txt
doc/advanced/optimization.txt
+0
-0
constype.txt
doc/advanced_tutorial/constype.txt
+0
-7
cop.txt
doc/advanced_tutorial/cop.txt
+12
-10
ctype.txt
doc/advanced_tutorial/ctype.txt
+24
-21
index.txt
doc/advanced_tutorial/index.txt
+1
-1
op.txt
doc/advanced_tutorial/op.txt
+0
-0
optimization.txt
doc/advanced_tutorial/optimization.txt
+35
-35
theano_vs_c.txt
doc/advanced_tutorial/theano_vs_c.txt
+28
-6
type.txt
doc/advanced_tutorial/type.txt
+40
-40
index.txt
doc/basic_tutorial/index.txt
+0
-1
contents.txt
doc/contents.txt
+3
-1
install.txt
doc/install.txt
+2
-2
function.txt
doc/topics/function.txt
+4
-4
index.txt
doc/topics/index.txt
+7
-12
没有找到文件。
doc/
topics
/ccodegen.txt
→
doc/
advanced
/ccodegen.txt
浏览文件 @
eb513f7c
File moved
doc/
topics
/compilation.txt
→
doc/
advanced
/compilation.txt
浏览文件 @
eb513f7c
File moved
doc/
topics
/env.txt
→
doc/
advanced
/env.txt
浏览文件 @
eb513f7c
File moved
doc/
topics
/features.txt
→
doc/
advanced
/features.txt
浏览文件 @
eb513f7c
File moved
doc/
topics
/module.txt
→
doc/
advanced
/module.txt
浏览文件 @
eb513f7c
File moved
doc/
topics
/optimization.txt
→
doc/
advanced
/optimization.txt
浏览文件 @
eb513f7c
File moved
doc/advanced_tutorial/constype.txt
deleted
100644 → 0
浏览文件 @
de95e004
====================
Making the cons type
====================
WRITEME
doc/advanced_tutorial/cop.txt
浏览文件 @
eb513f7c
...
@@ -26,22 +26,24 @@ What needs to be defined
...
@@ -26,22 +26,24 @@ What needs to be defined
There are less methods to define for an Op than for a Type:
There are less methods to define for an Op than for a Type:
- **c_code(node, name, input_names, output_names, sub)**
.. function:: c_code(node, name, input_names, output_names, sub)
- This must return C code that carries the computation we want to
This must return C code that carries the computation we want to do.
do.
- **c_code_cleanup(node, name, input_names, output_names, sub)**
.. function:: c_code_cleanup(node, name, input_names, output_names, sub)
- This must return C code that cleans up whatever c_code allocate
d
This must return C code that cleans up whatever c_code allocated an
d
and
that we must free.
that we must free.
-
*Default* The default behavior is to do nothing.
*Default* The default behavior is to do nothing.
- **c_compile_args(), c_headers(), c_libraries(), c_support_code()**
.. function:: c_compile_args()
c_headers()
c_libraries()
c_support_code()
-
Allows you to specify headers, libraries, special g++ arguments or
Allows you to specify headers, libraries, special g++ arguments or
helper functions/structs that the type needs. See :ref:`op`.
helper functions/structs that the type needs. See :ref:`op`.
The ``name`` argument is currently given an invalid value, so steer
The ``name`` argument is currently given an invalid value, so steer
...
...
doc/advanced_tutorial/ctype.txt
浏览文件 @
eb513f7c
...
@@ -46,38 +46,41 @@ be found in the documentation for :ref:`type`. Here, we'll focus on
...
@@ -46,38 +46,41 @@ be found in the documentation for :ref:`type`. Here, we'll focus on
the most important ones:
the most important ones:
- **c_declare(name, sub)**
.. function:: c_declare(name, sub)
-
This must return C code which declares variables. These variables
This must return C code which declares variables. These variables
will be available to operations defined in C. You may also write
will be available to operations defined in C. You may also write
typedefs.
typedefs.
- **c_init(name, sub)**
.. function:: c_init(name, sub)
- This must return C code which initializes the variables declared
This must return C code which initializes the variables declared in
in
c_declare. Either this or c_extract will be called.
c_declare. Either this or c_extract will be called.
- **c_extract(name, sub)**
.. function:: c_extract(name, sub)
-
This must return C code which takes a reference to a Python object
This must return C code which takes a reference to a Python object
and initializes the variables declared in c_declare to match the
and initializes the variables declared in c_declare to match the
Python object's data. Either this or c_init will be called.
Python object's data. Either this or c_init will be called.
- **c_sync(name, sub)**
.. function:: c_sync(name, sub)
-
When the computations are done, transfer the variables from the C
When the computations are done, transfer the variables from the C
structure we put them in to the destination Python object. This
structure we put them in to the destination Python object. This will
will
only be called for the outputs.
only be called for the outputs.
- **c_cleanup(name, sub)**
.. function:: c_cleanup(name, sub)
- When we are done using the data, clean up whatever we allocate
d
When we are done using the data, clean up whatever we allocated an
d
and
decrease the appropriate reference counts.
decrease the appropriate reference counts.
- **c_compile_args(), c_headers(), c_libraries(), c_support_code()**
.. function:: c_compile_args()
c_headers()
c_libraries()
c_support_code()
-
Allows you to specify headers, libraries, special g++ arguments or
Allows you to specify headers, libraries, special g++ arguments or
helper functions/structs that the type needs. See :ref:`type`.
helper functions/structs that the type needs. See :ref:`type`.
Each of these functions take two arguments, ``name`` and ``sub`` which
Each of these functions take two arguments, ``name`` and ``sub`` which
...
...
doc/advanced_tutorial/index.txt
浏览文件 @
eb513f7c
...
@@ -24,7 +24,7 @@ grounding for fundamental Theano concepts.
...
@@ -24,7 +24,7 @@ grounding for fundamental Theano concepts.
.. toctree::
.. toctree::
theano_vs_
python
theano_vs_
c
graphstructures
graphstructures
type
type
op
op
...
...
doc/advanced_tutorial/op.txt
浏览文件 @
eb513f7c
差异被折叠。
点击展开。
doc/advanced_tutorial/optimization.txt
浏览文件 @
eb513f7c
...
@@ -38,24 +38,24 @@ Global optimization
...
@@ -38,24 +38,24 @@ Global optimization
A global optimization (or optimizer) is an object which defines the following
A global optimization (or optimizer) is an object which defines the following
methods:
methods:
- **apply(env)**
.. function:: apply(env)
- This method takes an Env object which contains the computation
This method takes an Env object which contains the computation graph
graph and does modifications in line with what the optimization is
and does modifications in line with what the optimization is meant
meant
to do. This is of the main method of the optimizer.
to do. This is of the main method of the optimizer.
- **add_requirements(env)**
.. function:: add_requirements(env)
-
This method takes an Env object and adds :ref:`features
This method takes an Env object and adds :ref:`features
<envfeature>` to it. These features are "plugins" that are needed
<envfeature>` to it. These features are "plugins" that are needed
for the apply method to do its job properly.
for the apply method to do its job properly.
- **optimize(env)**
.. function:: optimize(env)
-
This is the interface function called by Theano.
This is the interface function called by Theano.
-
*Default:* this is defined by Optimizer as ``add_requirement(env);
*Default:* this is defined by Optimizer as ``add_requirement(env);
apply(env)``.
apply(env)``.
See the section about :ref:`env` to understand how to define these
See the section about :ref:`env` to understand how to define these
methods.
methods.
...
@@ -66,14 +66,14 @@ Local optimization
...
@@ -66,14 +66,14 @@ Local optimization
A local optimization is an object which defines the following methods:
A local optimization is an object which defines the following methods:
- **transform(node)**
.. function:: transform(node)
-
This method takes an :ref:`apply` node and returns either False to
This method takes an :ref:`apply` node and returns either False to
signify that no changes are to be done or a list of Variables which
signify that no changes are to be done or a list of Variables which
matches the length of the node's ``outputs`` list. When the
matches the length of the node's ``outputs`` list. When the
LocalOptimizer is applied by a Navigator, the outputs of the node
LocalOptimizer is applied by a Navigator, the outputs of the node
passed as argument to the LocalOptimizer will be replaced by the
passed as argument to the LocalOptimizer will be replaced by the
list returned.
list returned.
...
@@ -380,21 +380,21 @@ A Query is built by the following call:
...
@@ -380,21 +380,21 @@ A Query is built by the following call:
theano.gof.Query(include, require = None, exclude = None, subquery = None)
theano.gof.Query(include, require = None, exclude = None, subquery = None)
*
**include**: a set of tags (a tag being a string) such that every
**include**: a set of tags (a tag being a string) such that every
optimization obtained through this Query must have **one** of the
optimization obtained through this Query must have **one** of the tags
tags listed. This field is required and basically acts as a
listed. This field is required and basically acts as a starting point
starting point
for the search.
for the search.
*
**require**: a set of tags such that every optimization obtained
**require**: a set of tags such that every optimization obtained
through this Query must have **all** of these tags.
through this Query must have **all** of these tags.
*
**exclude**: a set of tags such that every optimization obtained
**exclude**: a set of tags such that every optimization obtained
through this Query must have **none** of these tags.
through this Query must have **none** of these tags.
*
**subquery**: optdb can contain sub-databases; subquery is a
**subquery**: optdb can contain sub-databases; subquery is a
dictionary mapping the name of a sub-database to a special Query.
dictionary mapping the name of a sub-database to a special Query. If
If no subquery is given for a sub-database, the original Query
no subquery is given for a sub-database, the original Query will be
will be
used again.
used again.
Furthermore, a Query object includes three methods, ``including``,
Furthermore, a Query object includes three methods, ``including``,
``requiring`` and ``excluding`` which each produce a new Query object
``requiring`` and ``excluding`` which each produce a new Query object
...
@@ -454,8 +454,8 @@ Theano defines two EquilibriumDBs where you can put local
...
@@ -454,8 +454,8 @@ Theano defines two EquilibriumDBs where you can put local
optimizations:
optimizations:
*
*
*canonicalize**: this contains optimizations that aim to *simplify*
**canonicalize**: this contains optimizations that aim to *simplify*
the graph:
the graph:
* Replace rare or esoterical operations with their equivalents using
* Replace rare or esoterical operations with their equivalents using
elementary operations.
elementary operations.
...
@@ -467,8 +467,8 @@ optimizations:
...
@@ -467,8 +467,8 @@ optimizations:
* Fold constants (Constant(2)*Constant(2) becomes Constant(4))
* Fold constants (Constant(2)*Constant(2) becomes Constant(4))
*
*
*specialize**: this contains optimizations that aim to *specialize*
**specialize**: this contains optimizations that aim to *specialize*
the graph:
the graph:
* Replace a combination of operations with a special operation that
* Replace a combination of operations with a special operation that
does the same thing (but better).
does the same thing (but better).
...
...
doc/advanced_tutorial/theano_vs_
python
.txt
→
doc/advanced_tutorial/theano_vs_
c
.txt
浏览文件 @
eb513f7c
.. _theano_vs_
python
:
.. _theano_vs_
c
:
============
==========
============
Theano vs.
Python
Theano vs.
C
============
==========
============
We describe some of the patterns in Theano, and present their closest
We describe some of the patterns in Theano, and present their closest
analogue in
Python
:
analogue in
a statically typed language such as C
:
=============== ===========================================================
=============== ===========================================================
Theano
Python
Theano
C
=============== ===========================================================
=============== ===========================================================
Apply function application / function call
Apply function application / function call
Variable function data / variable
Variable function data / variable
...
@@ -17,3 +17,25 @@ Op operations carried out in computation / function definition
...
@@ -17,3 +17,25 @@ Op operations carried out in computation / function definition
Type data types
Type data types
Module ??? class?
Module ??? class?
=============== ===========================================================
=============== ===========================================================
For example:
.. code-block:: c
int main(int a) {
int b = 3;
int c = f(b)
return g(a, c);
}
Based on this code snippet, we can relate f and g to Ops, a, b and c
to Variables, g(a, c) and f(b) (taken as meaning the action of
computing f or g on their respective inputs) to Applies. Lastly, int
could be interpreted as the Theano Type of the Variables a and b.
doc/advanced_tutorial/type.txt
浏览文件 @
eb513f7c
...
@@ -22,69 +22,69 @@ i.e. the same default argument names and values. If you wish to add
...
@@ -22,69 +22,69 @@ i.e. the same default argument names and values. If you wish to add
extra arguments to any of these methods, these extra arguments must have
extra arguments to any of these methods, these extra arguments must have
default values.
default values.
- **filter(value, strict=False)**
.. function:: filter(value, strict=False)
-
This casts a value to match the Type and returns the
This casts a value to match the Type and returns the
casted value. If ``value`` is incompatible with the Type,
casted value. If ``value`` is incompatible with the Type,
the method must raise an exception. If ``strict`` is True, ``filter`` must return a
the method must raise an exception. If ``strict`` is True, ``filter`` must return a
reference to ``value`` (i.e. casting prohibited)
reference to ``value`` (i.e. casting prohibited)
We need to define ``filter`` with two arguments. The second argument
We need to define ``filter`` with two arguments. The second argument
must be called ``strict`` (Theano often calls it by keyword) and must
must be called ``strict`` (Theano often calls it by keyword) and must
have a default value of ``False``.
have a default value of ``False``.
- **is_valid_value(value)**
.. function:: is_valid_value(value)
-
Returns True iff the value is compatible with the Type. If
Returns True iff the value is compatible with the Type. If
``filter(value, strict = True)`` does not raise an exception, the
``filter(value, strict = True)`` does not raise an exception, the
value is compatible with the Type.
value is compatible with the Type.
- *Default*: True iff ``filter(value, strict = True)`` does not raise an
*Default*: True iff ``filter(value, strict = True)`` does not raise
exception.
an
exception.
- **values_eq(a, b)**
.. function:: values_eq(a, b)
-
Returns True iff ``a`` and ``b`` are equal.
Returns True iff ``a`` and ``b`` are equal.
-
*Default*: ``a == b``
*Default*: ``a == b``
- **values_eq_approx(a, b)**
.. function:: values_eq_approx(a, b)
- Returns True iff ``a`` and ``b``
Returns True iff ``a`` and ``b`` are approximately equal, for a
are approximately equal, for a definition of "approximately" which
definition of "approximately" which varies from Type to Type.
varies from Type to Type.
-
*Default*: ``values_eq(a, b)``
*Default*: ``values_eq(a, b)``
- **make_variable(name=None)**
.. function:: make_variable(name=None)
-
Makes a :term:`Variable` of this Type with the specified name, if
Makes a :term:`Variable` of this Type with the specified name, if
``name is not None``. If ``name is ``None``, then the Variable does
``name is not None``. If ``name is ``None``, then the Variable does
not have a name. The Variable will have its ``type`` field set to the
not have a name. The Variable will have its ``type`` field set to
Type object.
the
Type object.
- *Default*: there is a generic definition of this in Type. The Variable's
*Default*: there is a generic definition of this in Type. The
``type`` will be the object that defines this method (in other words,
Variable's ``type`` will be the object that defines this method (in
``self``).
other words,
``self``).
- **__call__(name=None)**:
.. function:: __call__(name=None)
-
Syntactic shortcut to ``make_variable``.
Syntactic shortcut to ``make_variable``.
-
*Default*: ``make_variable``
*Default*: ``make_variable``
- **__eq__(self, other)**:
.. function:: __eq__(other)
-
Used to compare Type instances themselves
Used to compare Type instances themselves
-
*Default*: ``object.__eq__``
*Default*: ``object.__eq__``
- **__hash__(self)**:
.. function:: __hash__()
- Types should not be mutable, so it should be Ok to define a hash function.
Types should not be mutable, so it should be Ok to define a hash
Typically this function should hash all of the terms involved in ``__eq__``.
function. Typically this function should hash all of the terms
involved in ``__eq__``.
-
*Default*: ``id(self)``
*Default*: ``id(self)``
For each method, the *default* is what ``Type`` defines
For each method, the *default* is what ``Type`` defines
for you. So, if you create an instance of ``Type`` or an
for you. So, if you create an instance of ``Type`` or an
...
...
doc/basic_tutorial/index.txt
浏览文件 @
eb513f7c
...
@@ -30,6 +30,5 @@ Now we're ready for the tour:
...
@@ -30,6 +30,5 @@ Now we're ready for the tour:
adding
adding
examples
examples
function
module
module
tools
tools
doc/contents.txt
浏览文件 @
eb513f7c
...
@@ -8,12 +8,14 @@ Contents
...
@@ -8,12 +8,14 @@ Contents
.. toctree::
.. toctree::
:maxdepth: 2
:maxdepth: 2
LICENSE
index
introduction
introduction
LICENSE
install
install
basic_tutorial/index
basic_tutorial/index
advanced_tutorial/index
advanced_tutorial/index
topics/index
topics/index
advanced/index
indexes/index
indexes/index
glossary
glossary
links
links
...
...
doc/install.txt
浏览文件 @
eb513f7c
...
@@ -144,9 +144,9 @@ Generating the documentation
...
@@ -144,9 +144,9 @@ Generating the documentation
----------------------------
----------------------------
You can read the latest HTML documentation `here
You can read the latest HTML documentation `here
<http://pylearn.org/theano/contents.html>`_.
<http://pylearn.org/theano/contents.html>`_
_
.
You can download the latest PDF documentation `here
You can download the latest PDF documentation `here
<http://pylearn.org/theano/theano.pdf`_.
<http://pylearn.org/theano/theano.pdf`_
_
.
We recommend you look at the documentation on the website, since it
We recommend you look at the documentation on the website, since it
will be more current than the documentation included with the package.
will be more current than the documentation included with the package.
...
...
doc/
basic_tutorial
/function.txt
→
doc/
topics
/function.txt
浏览文件 @
eb513f7c
.. _function:
.. _
using
function:
===============
===============
======
theano.function
Using
theano.function
===============
===============
======
This page is about ``theano.function``, the interface for compiling graphs into callable objects.
This page is about ``theano.function``, the interface for compiling graphs into callable objects.
...
...
doc/topics/index.txt
浏览文件 @
eb513f7c
.. _
advanced
:
.. _
topics
:
======
=========
======
Advanced
Topics
Topics
======
=========
======
.. toctree::
.. toctree::
:maxdepth: 2
:maxdepth: 2
function
pipeline
pipeline
unittest
profilemode
profilemode
debugmode
debugmode
debug_faq
module_vs_op
module_vs_op
randomstreams
randomstreams
.. env
.. features
.. optimization
.. compilation
.. ccodegen
.. function
.. module
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论