Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
79806e6e
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
79806e6e
编写于
12月 09, 2019
作者:
H
Huihuang Zheng
提交者:
GitHub
12月 09, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add Chinese Doc for cond API (#1648)
* Add Chinese Doc for cond API
上级
0f31f2de
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
88 addition
and
0 deletion
+88
-0
doc/fluid/api/layers.rst
doc/fluid/api/layers.rst
+1
-0
doc/fluid/api_cn/layers_cn.rst
doc/fluid/api_cn/layers_cn.rst
+1
-0
doc/fluid/api_cn/layers_cn/cond_cn.rst
doc/fluid/api_cn/layers_cn/cond_cn.rst
+86
-0
未找到文件。
doc/fluid/api/layers.rst
浏览文件 @
79806e6e
...
...
@@ -46,6 +46,7 @@ fluid.layers
layers/clip_by_norm.rst
layers/collect_fpn_proposals.rst
layers/concat.rst
layers/cond.rst
layers/continuous_value_model.rst
layers/conv2d.rst
layers/conv2d_transpose.rst
...
...
doc/fluid/api_cn/layers_cn.rst
浏览文件 @
79806e6e
...
...
@@ -51,6 +51,7 @@ fluid.layers
layers_cn/clip_cn.rst
layers_cn/collect_fpn_proposals_cn.rst
layers_cn/concat_cn.rst
layers_cn/cond_cn.rst
layers_cn/continuous_value_model_cn.rst
layers_cn/conv2d_cn.rst
layers_cn/conv2d_transpose_cn.rst
...
...
doc/fluid/api_cn/layers_cn/cond_cn.rst
0 → 100644
浏览文件 @
79806e6e
.. _cn_api_fluid_layers_cond:
cond
-------------------------------
.. py:function:: paddle.fluid.layers.cond(pred, true_fn=None, false_fn=None, name=None)
如果 ``pred`` 是 ``True`` ,该API返回 ``true_fn()`` ,否则返回 ``false_fn()`` 。
用户如果不想在 ``callable`` 中做任何事,可以把 ``true_fn`` 或 ``false_fn`` 设为 ``None`` ,此时本API会把该 ``callable`` 视为简单返回 ``None`` 。
``true_fn`` 和 ``false_fn`` 需要返回同样嵌套结构(nest structure)的Tensor,如果不想返回任何值也可都返回 ``None`` 。
PaddlePaddle里Tensor的嵌套结构是指一个Tensor,或者Tensor的元组(tuple),或者Tensor的列表(list)。
.. note::
1. 因为PaddlePaddle的静态图数据流, ``true_fn`` 和 ``false_fn`` 返回的元组必须形状相同,但是里面的Tensor形状可以不同。
2. 不论运行哪个分支,在 ``true_fn`` 和 ``false_fn`` 外创建的Tensor和Op都会被运行,即PaddlePaddle并不是惰性语法(lazy semantics)。例如
.. code-block:: python
import paddle.fluid as fluid
a = fluid.data(name='a', shape=[-1, 1], dtype='float32')
b = fluid.data(name='b', shape=[-1, 1], dtype='float32')
c = a * b
out = fluid.layers.cond(a < b, lambda: a + c, lambda: b * b)
不管 ``a < b`` 是否成立, ``c = a * b`` 都会被运行。
参数:
- **pred** (Variable) - 一个形状为[1]的布尔型(boolean)的Tensor,该布尔值决定要返回 ``true_fn`` 还是 ``false_fn`` 的运行结果。
- **true_fn** (callable) - 一个当 ``pred`` 是 ``True`` 时被调用的callable,默认值: ``None`` 。
- **false_fn** (callable) - 一个当 ``pred`` 是 ``False`` 时被调用的callable,默认值: ``None`` 。
- **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值: ``None`` 。
返回:
如果 ``pred`` 是 ``True`` ,该API返回 ``true_fn()`` ,否则返回 ``false_fn()`` 。
返回类型:Variable|list(Variable)|tuple(Variable)
抛出异常:
- ``TypeError`` - 如果 ``true_fn`` 或 ``false_fn`` 不是callable。
- ``ValueError`` - 如果 ``true_fn`` 和 ``false_fn`` 没有返回同样的嵌套结构(nest structure),对嵌套结构的解释见上文。
**代码示例**:
.. code-block:: python
import paddle.fluid as fluid
import paddle.fluid.layers as layers
from paddle.fluid.executor import Executor
from paddle.fluid.framework import Program, program_guard
#
# pseudocode:
# if 0.1 < 0.23:
# return 1, True
# else:
# return 3, 2
#
def true_func():
return layers.fill_constant(
shape=[1, 2], dtype='int32', value=1), layers.fill_constant(
shape=[2, 3], dtype='bool', value=True)
def false_func():
return layers.fill_constant(
shape=[3, 4], dtype='float32', value=3), layers.fill_constant(
shape=[4, 5], dtype='int64', value=2)
main_program = Program()
startup_program = Program()
with program_guard(main_program, startup_program):
x = layers.fill_constant(shape=[1], dtype='float32', value=0.1)
y = layers.fill_constant(shape=[1], dtype='float32', value=0.23)
pred = layers.less_than(x, y)
out = layers.cond(pred, true_func, false_func)
# out is a tuple containing 2 tensors
place = fluid.CUDAPlace(0) if fluid.core.is_compiled_with_cuda(
) else fluid.CPUPlace()
exe = fluid.Executor(place)
ret = exe.run(main_program, fetch_list=out)
# ret[0] = [[1 1]]
# ret[1] = [[ True True True]
# [ True True True]]
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录