【转载】 tf.cond() ----------------------(tensorflow 条件判断语句 if.......else....... )
原文地址:
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: iftrue_fnorfalse_fnis not callable.ValueError: iftrue_fnandfalse_fndo 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....... )的更多相关文章
- shell编程基础(3)条件判断语句
1,带参数的shellscript #this is program build 5.11 to test shell script ############ cxz ####### 5.11 ### ...
- 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). 分析: 首先想到的是写递归函数,但是遇 ...
- 求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) 分析:这题本来很 ...
- if条件判断语句的不同
let number = ["a":1, "b":2, "c":3]; if let num = number["d"] ...
- python最简洁的条件判断语句写法
这篇文章主要介绍了Python返回真假值(True or False)小技巧,本文探讨的是最简洁的条件判断语句写法,本文给出了两种简洁写法,需要的朋友可以参考下 如下一段代码: def isLen(s ...
- 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) 分析:这题本来很 ...
- 前端笔记知识点整合之JavaScript(三)关于条件判断语句、循环语句那点事
一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力 ...
- 前端笔记之JavaScript(三)关于条件判断语句、循环语句那点事
一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力语法 ...
- Python的条件判断语句------if/else语句
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户的年龄,根据年龄打印不同的内容... Python程序中,能让计算机自己作出判断的语句就是if语句: 例: age = 25 ...
随机推荐
- Linux(CentOS7)下安装Mysql8数据库
一.Linux版本 二.先下载Linux下的Mysql包,打开Mysql官网 https://www.mysql.com/ 点击DOWNLOAD,进入 https://www.mysql.com/do ...
- 解锁 redis 锁的正确姿势
redis 是 php 的好朋友,在 php 写业务过程中,有时候会使用到锁的概念,同时只能有一个人可以操作某个行为.这个时候我们就要用到锁.锁的方式有好几种,php 不能在内存中用锁,不能使用 zo ...
- H3C STA>PC的数据转发
- 【转】大众点评CAT开源监控系统剖析
https://www.cnblogs.com/yeahwell/p/cat.html 参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监 ...
- PAT 乙级 1009.说反话 C++/Java
1009 说反话 (20 分) 题目来源 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词 ...
- HDU3338 Kakuro Extension(最大流+思维构图)
这道题一定要写一下,卡了好久. 题意: 有黑白两种方格,最上边一行和最左边一列一定是黑色,然后其余的地方有可能是黑色,有可能是白色,和白色相邻的黑色方格里有数字(1个或2个), 现在要求在白色方格里填 ...
- Spring @Autowired 注解 学习资料
Spring @Autowired 注解 学习资料 网址 Spring @Autowired 注解 https://wiki.jikexueyuan.com/project/spring/annota ...
- 本地项目git到github上
步骤: 1.下载git,安装完成后到桌面右击鼠标会出现git的选项 2.创建一个本地仓库用来存储你的本地项目,我在D盘创建一个reposity的文件夹 3.在reposity文件夹打开git命令行,输 ...
- 欢迎访问阿里云Go Module代理仓库服务
简介 go module公共代理仓库,代理并缓存go模块.你可以利用该代理来避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建. 地址 https://mirrors.aliyun.com/g ...
- 华三IRF配置
配置步骤: IRF的配置步骤: 1.配置IRF域(域ID=10.成员ID.优先级) irf domain 10irf member 1 priority 10irf member 2 priority ...