Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pytensor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
testgroup
pytensor
Commits
cda13bdc
提交
cda13bdc
authored
1月 13, 2017
作者:
khaotik
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refine docs
- much prettier html version - modified TODO section following Fred's comment
上级
9bda962f
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
61 行增加
和
44 行删除
+61
-44
builders.py
theano/compile/builders.py
+61
-44
没有找到文件。
theano/compile/builders.py
浏览文件 @
cda13bdc
...
@@ -14,50 +14,68 @@ from theano.gof.utils import undef
...
@@ -14,50 +14,68 @@ from theano.gof.utils import undef
class
OpFromGraph
(
gof
.
Op
):
class
OpFromGraph
(
gof
.
Op
):
"""
"""
This creates an `
Op
` from inputs and outputs lists of variables.
This creates an `
`Op`
` from inputs and outputs lists of variables.
The signature is similar to
theano.function() and the resulting
The signature is similar to
:func:`theano.function <theano.function>`
`Op
`'s perform will do the same operation as::
and the resulting ``Op`
`'s perform will do the same operation as::
orig_function(inputs, outputs, **kwargs)
orig_function(inputs, outputs, **kwargs)
Currently does not support
'updates' or 'givens'
argument.
Currently does not support
``updates`` or ``givens``
argument.
Parameters
Parameters
----------
----------
inputs: list of
variables
inputs: list of
:class:`Variable <theano.gof.Variable>`
outputs: list of
variables
outputs: list of
:class:`Variable <theano.gof.Variable>`
inline: bool, optional
inline: bool, optional
if True, will cause the Op's original graph being used during
Defaults to ``False``
compilation, otherwise will use a pre-compiled function inside.
``True`` : Cause the Op's original graph being used during
grad_overrides: None | undef | OpFromGraph instance | function
\
compilation, the Op will not be visible in the compiled
list of (None | undef | function), optional
graph but rather its internal graph.
Used to override default gradient routine.
Overriding function(s) must take two list of variable(s) as inputs,
``False`` : will use a pre-compiled function inside.
the original inputs and ups gradients
For different `grad_overrides`:
grad_overrides : single or list of {None, undef, OpFromGraph, callable}, optional
Defaults to ``None``.
- `None` : will use default gradient routine.
- theano.utils.undef : No gradient will be used (zero)
``None`` : Do not override gradient
- OpFromGraph instance: the OfG instance should accept inputs with same
theano.utils.undef : No gradient will be used (zero)
order and types of "inputs" and "output_grads" arguments as one would
specify in grad() method
OpFromGraph instance : Override with another OpFromGraph, should
- function : must return list of Variable.
accept inputs as the same order and types of "inputs" and "output_grads"
- list : each function must return a single Variable. The order
arguments as one would specify in grad() method.
of the list must corresponds to inputs
callable : similar to OpFromGraph instance, must return list of
rop_overrides: None | undef | OpFromGraph instance | function
\
:class:`Variable <theano.gof.Variable>`.
list of (None | undef | function), optional
Similar to grad_overrides, list order should match two list of "inputs"
list: Each OpFromGraph/callable must return a single
concatenated.
:class:`Variable <theano.gof.Variable>`. Each list element corresponds to gradient of
a specific input.
**kwargs: optional
Whenever this OfG instance is precompiled instead of inline, a call to
rop_overrides : single or list of {None, undef, OpFromGraph, callable}, optional
theano.compile.function_module.orig_function during precompile phase
Defaults to ``None``.
will take the extra keyword args
``None`` : Do not override gradient
theano.utils.undef : No gradient will be used (zero)
OpFromGraph instance : Override with another OpFromGraph, should
accept inputs as the same order and types of "inputs" and "output_grads"
arguments as one would specify in grad() method.
callable : similar to OpFromGraph instance, must return list of
:class:`Variable <theano.gof.Variable>`.
list: Each OpFromGraph/callable must return a single
:class:`Variable <theano.gof.Variable>`. Each list element corresponds
to a specific output of R_op.
**kwargs : optional
Check
:func:`orig_function <theano.compile.function_module.orig_function>`
for more arguments, only works when not inline.
.. TODO:
.. TODO:
...
@@ -72,8 +90,7 @@ class OpFromGraph(gof.Op):
...
@@ -72,8 +90,7 @@ class OpFromGraph(gof.Op):
- Add support for the GPU? Probably just need an opt to remove transfer
- Add support for the GPU? Probably just need an opt to remove transfer
- Add support to pickle this Op.
- Add support to pickle this Op.
- Add support/test with random generator
- Add support/test with random generator
- Add optimizations prior to inline expansion such as removing unused
- Add optimization to removing unused inputs/outputs
inputs/outputs
Notes
Notes
-----
-----
...
@@ -81,14 +98,14 @@ class OpFromGraph(gof.Op):
...
@@ -81,14 +98,14 @@ class OpFromGraph(gof.Op):
and invisible to the user. They can be as input to the node or in
and invisible to the user. They can be as input to the node or in
the inner graph.
the inner graph.
- We support unused inputs. This is needed for the grad.
- We support unused inputs. This is needed for the grad.
-
`inline=True` will cause better runtime optimization at the cost
-
We support nested OpFromGraph.
of compilation time. Like "inline" keyword in C/C++, this is merely a
- ``inline=True`` will cause better runtime optimization at the cost
suggestion to compiler which is not guaranteed. Currently only
of compilation time. Currently only works with ``fast_compile`` or
works with "fast_compile" or "fast_run"
mode.
``fast_run``
mode.
-
The function(s) supplied for overrding gradient/rop will be called
-
It's recommanded to provide pure functions (no side effects like
only once at the first call to grad/R_op, and will be converted to
setting global variable) as callable(s). The callable(s) supplied
OfG instances. Any side effect (modifying non local states) of the
for overrding gradient/rop will be called only once at the first
overriding function should not be relied on
.
call to grad/R_op, and will be converted to OpFromGraph instances
.
Examples
Examples
--------
--------
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论