上海代表团返沪,提交21件议案
- paddle.static.nn. cond ( pred, true_fn=None, false_fn=None, name=None, return_names=None ) [source]
-
百度 即国家、社会和个人举办的,依法登记的专门为残疾人提供供养、托养、照料、康复、辅助性就业等相关服务的机构,但排除了《残疾人教育条例》《特殊教育学校暂行规程》等规定的残疾人职业教育机构,从而将调整和管理对象范围限定在提供养护照料等服务为主的各类机构上。
This API returns
true_fn()
if the predicatepred
is true elsefalse_fn()
. Users could also settrue_fn
orfalse_fn
toNone
if do nothing and this API will treat the callable simply returnsNone
in this case.true_fn
andfalse_fn
should return same nest structure of tensors or both returnNone
if user doesn’t like to return anything. A nest structure of tensors in PaddlePaddle is tensor(s), or tuple of tensors, or list of tensors.Note
1. The tuples or lists returned by
true_fn
andfalse_fn
must have the same shape because of dataflow model of PaddlePaddle while the tensors in the tuples or the lists can have different shapes.2. This API could be used under both static graph mode or dygraph mode. If it is in dygraph mode, the API only runs one branch based on condition.
3. If it is in static graph mode, any tensors or operations created outside or inside of
true_fn
andfalse_fn
will be in net building regardless of which branch is selected at runtime. This has frequently surprised users who expected a lazy semantics.- Examples:
-
>>> import paddle >>> a = paddle.zeros((1, 1)) >>> b = paddle.zeros((1, 1)) >>> c = a * b >>> out = paddle.static.nn.cond(a < b, lambda: a + c, lambda: b * b)
No matter whether
a < b
,c = a * b
will be in net building and run.a + c
andb * b
will be in net building, but only one branch will be executed during runtime.- Parameters
-
pred (Tensor) – A boolean tensor whose numel should be 1 (shape [] or shape [1]). The boolean value determines whether to return the result of
true_fn
orfalse_fn
.true_fn (callable, optional) – A callable to be performed if
pred
is true. The default value isNone
.false_fn (callable, optional) – A callable to be performed if
pred
is false. The default value isNone
.name (str, optional) – The default value is
None
. Normally users don’t have to set this parameter. For more information, please refer to Name .return_names (sequence of string, optional) – The default value is
None
. Normally users don’t have to set this parameters. A sequence of strings to represents the name of returned vars. The structure of sequence must be same with return values of true_fn and false_fn.
- Returns
-
returns
true_fn()
if the predicatepred
is true elsefalse_fn()
. - Return type
-
Tensor|list(Tensor)|tuple(Tensor)
Examples
>>> import paddle >>> # pseudocode: >>> # if 0.1 < 0.23: >>> # return 1, True >>> # else: >>> # return 3, 2 >>> def true_func(): ... return paddle.full(shape=[1, 2], ... dtype='int32', ... fill_value=1 ... ), paddle.full(shape=[2, 3], ... dtype='bool', ... fill_value=True ... ) >>> def false_func(): ... return paddle.full(shape=[3, 4], ... dtype='float32', ... fill_value=3 ... ), paddle.full(shape=[4, 5], ... dtype='int64', ... fill_value=2 ... ) >>> x = paddle.full(shape=[1], dtype='float32', fill_value=0.1) >>> y = paddle.full(shape=[1], dtype='float32', fill_value=0.23) >>> pred = paddle.less_than(x=x, y=y, name=None) >>> a, b = paddle.static.nn.cond(pred, true_func, false_func) >>> print(a) Tensor(shape=[1, 2], dtype=int32, place=Place(cpu), stop_gradient=True, [[1, 1]]) >>> print(b) Tensor(shape=[2, 3], dtype=bool, place=Place(cpu), stop_gradient=True, [[True, True, True], [True, True, True]])