tf.cond()

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
---

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 张量拼接_调整维度_切片

    tf.concat的作用主要是将向量按指定维连起来,其余维度不变;而1.0版本以后,函数的用法变成:

    于小勇
  • LeNet-5

    LeNet-5 模型是 Yann LeCun 教授于 1998 年在论文 Gradient-based learning applied to document...

    于小勇
  • 如何用tensorflow训练神经网络

    设置神经网络参数的过程就是神经网络的训练过程。只有经过有效训练的神经网络模型才可以真正地解决分类或者回归问题使用监督学习的方式设置神经网络参数需要有一个标注好的...

    于小勇
  • 使用shell批量监控磁盘坏块(二) (r7笔记第80天)

    之前分享了第一篇 使用shell批量监控磁盘坏块(一),今天来简单说说这个需求的实现内容 。 首先主要思路是通过中控的机器来发送监控的细节,然后返回结果。 ?...

    jeanron100
  • SharifCTF 2018 Crypto writeup

    本文作者:HeartSky 之前的SharifCTF,其中密码学部分有许多有意思的题目,因此来分享下相关解题过程。 0x01 DES See known_p...

    安恒网络空间安全讲武堂
  • python元组与购物车程序

    #Author:zww ''' 程序:购物车程序 需求: 1.启动程序后,让用户输入工资,然后打印呢商品列表 2.允许用户根据商品编号购买商...

    用户1679793
  • SAP Spartacus的Banner Component请求

    我在我的自定义Component里将observable数据用console.log打印出来:

    Jerry Wang
  • Go语言字符串高效拼接(一)

    在我们变成的时候,和字符串打交道是必不可少的,我们对数据库里文本的处理,Web文本的显示,文本数据的存储等都需要和字符串打交道,那么对于字符串来说,查找、拼接这...

    飞雪无情
  • JS入门难点解析11-构造函数,原型对象,实例对象

    (注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!) (注2:更多内容请查看我的目录。)

    love丁酥酥
  • 匿名爆料,头条员工被强制离职!苹果去年研发开支127亿美元;百度Doris项目进入Apache基金会孵化器

    近日,今日头条“强制员工离职”一事在脉脉上刷屏了,总结一下目前的一些说法,事件概况是:今日头条一个产品被放弃了,某产品经理在头条圈发帖要求复盘一下为什么,结果(...

    程序员宝库

扫码关注云+社区

领取腾讯云代金券