原文地址:

https://cloud.tencent.com/developer/article/1486441

------------------------------------------------------

tf.cond(
pred,
true_fn=None,
false_fn=None,
name=None
)

true_fn和false_fn都返回输出张量的列表。true_fn和false_fn必须具有相同的非零数输出类型。 警告:在true_fn和false_fn之外创建的任何张量或操作都将执行,而不管在运行时选择了哪个分支。

尽管这种行为与TensorFlow的数据流模型是一致的,但是它经常会让用户感到惊讶,因为他们希望使用更懒惰的语义。考虑以下简单的程序:

z = tf.multiply(a, b)
result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y))

如果x < y,tf.add()建会被执行,而tf.square()不会被执行。因为至少cond的一个分支tf需要z。乘法运算总是无条件地执行。

注意,cond只调用true_fn和false_fn一次(在对cond的调用中调用,而在Session.run()期间根本不调用)。cond使用一些额外的图节点将true_fn和false_fn调用期间创建的图片段拼接在一起,以确保根据pred的值执行正确的分支。cond支持在tensorflow.python.util.nest中实现的嵌套结构。true_fn和false_fn都必须返回列表、元组和/或命名元组的相同(可能是嵌套的)值结构。单例列表和元组是唯一的例外:当true_fn和/或false_fn返回时,它们被隐式解压缩为单个值。

注意:“直接”使用在cond分支外部创建的张量是非法的,例如通过在python状态下存储对分支张量的引用。

如果你需要使用一个在分支函数中创建的张量,你应该把它作为分支函数的输出返回并使用tf.cond的输出。

参数:

  • pred:一个标量,它决定是返回true_fn的结果还是false_fn的结果。
  • true_fn:如果pred为真,则执行可调用的。
  • false_fn:如果pred为false,则可执行的调用。
  • name:返回的张量的可选名称前缀。

返回值:

  • 调用true_fn或false_fn返回的张量。如果callables返回一个单例列表,则从列表中提取元素。

可能产生的异常:

  • TypeError: if true_fn or false_fn is not callable.
  • ValueError: if true_fn and false_fn do not return the same number of tensors, or return tensors of different types.

例:

import tensorflow as tf
a=tf.constant(2)
b=tf.constant(3)
x=tf.constant(4)
y=tf.constant(5)
z = tf.multiply(a, b)
result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y))
with tf.Session() as session:
print(result.eval())
Output:

---
10
---

【转载】 tf.cond() ----------------------(tensorflow 条件判断语句 if.......else....... )的更多相关文章

  1. shell编程基础(3)条件判断语句

    1,带参数的shellscript #this is program build 5.11 to test shell script ############ cxz ####### 5.11 ### ...

  2. Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)

    题目描述: 求 1+2+...+n, 要求不能使用乘除法.for.while.if.else.switch.case 等关键字以及条件判断语句 (A?B:C). 分析: 首先想到的是写递归函数,但是遇 ...

  3. 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法

    来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...

  4. if条件判断语句的不同

    let number = ["a":1, "b":2, "c":3]; if let num = number["d"] ...

  5. python最简洁的条件判断语句写法

    这篇文章主要介绍了Python返回真假值(True or False)小技巧,本文探讨的是最简洁的条件判断语句写法,本文给出了两种简洁写法,需要的朋友可以参考下 如下一段代码: def isLen(s ...

  6. C语言奇思妙想:求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)

    来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...

  7. 前端笔记知识点整合之JavaScript(三)关于条件判断语句、循环语句那点事

      一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力 ...

  8. 前端笔记之JavaScript(三)关于条件判断语句、循环语句那点事

    一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力语法 ...

  9. Python的条件判断语句------if/else语句

    计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户的年龄,根据年龄打印不同的内容... Python程序中,能让计算机自己作出判断的语句就是if语句: 例: age = 25 ...

随机推荐

  1. 【转】UCOSIII基础知识点

    1.其中最有用的功能应该是时间片轮转法( roundrobin), 这个是 uC/OS-II 中不支持的,但是现在已经是 uC/OS-III 的一个功能了 2.uC/OS-III 被设计用于 32 位 ...

  2. 【Mysql】数据库为啥会出现_encrypt和_warning成对的表

    这是因为MySQL数据库的勒索病毒 可能是你数据库的密码太简单或者没有设置密码导致数据库被攻击 详情请参考: https://www.secpulse.com/archives/112351.html

  3. k8s运维处理

    k8s运维处理 驱逐节点容器,进行docker,等重要组件的重启时,打驱逐标记 kubectl drain [option --node ip] 进行重启docker或kubelet等其他操作,操作完 ...

  4. mysql分析sql语句基础工具 -- explain

    分析sql语句 explain explain (sql语句) G; 分析结果: id sql语句编号如果是连接查询,表之间是平等关系,编号相同:如果有子查询,编号递增. select——type 查 ...

  5. redis windows下载地址

    https://github.com/MicrosoftArchive/redis/tags

  6. iwlist/iwconfig/iw命令

    1.iwlist 命令:用于对/proc/net/wireless文件进行分析,得出无线网卡相关信息 # iwlist wlan0 scanning 搜索当前无线网络 # iwlist wlan0 f ...

  7. Beta冲刺(4/7)——2019.5.25

    所属课程 软件工程1916|W(福州大学) 作业要求 Beta冲刺(4/7)--2019.5.25 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪万里 ...

  8. TCP拥塞避免

    目录 TCP拥塞避免 超时重传机制 拥塞控制 慢启动 拥塞避免 快重传 快恢复 与流量控制区别 参考 TCP拥塞避免 拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载.拥塞 ...

  9. ajax jsonp函数调用

    jsonp数据 jsonpHandler({name:"liujinyu",age:"24"}) ajax调用 $.ajax({     type:'GET', ...

  10. Linked List Sorting

    静态链表(用结构体数组模拟链表)     1052 Linked List Sorting (25分)   A linked list consists of a series of structur ...