• 【转载】 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: 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
    ---
  • 相关阅读:
    后台接受ajax传递值的实例代码
    如何动态添加和删除一个div
    模拟实现兼容低版本IE浏览器的原生bind()函数功能
    javascript当文本框获得焦点设置边框
    js实现未知宽高的元素在指定元素中垂直水平居中
    产品图片无缝水平滚动效果代码
    jQuery实现的鼠标滑过切换图片代码实例
    如何实现在密码框如出现提示语
    JS 中 Class
    从网页源代码来找flash播放器腾讯视频源地址
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/12033305.html
Copyright © 2020-2023  润新知