【问题标题】:How to apply list of functions cumulatively in TensorFlow如何在 TensorFlow 中累积应用函数列表
【发布时间】:2020-07-29 17:40:20
【问题描述】:

假设我输入了 x 和函数列表 [f, g, h, j] 是否有 TensorFlow 函数来获取这些函数的组成?即[f(x), g(f(x)), h(g(f(x))), j(h(g(f(x))))]

【问题讨论】:

    标签: tensorflow keras deep-learning tensorflow2.0 tf.keras


    【解决方案1】:

    Python 可以将可调用对象(即函数)分配给变量。如果您使用此功能,您可以轻松地遍历可调用列表以获取组合:

    def compose(x):
        # For more clarity, let's actually assign callables to variables
        f = tf.nn.leaky_relu
        g = lambda x: -x
        h = tf.nn.sigmoid
        j = tf.reduce_mean
    
        callables = [f, g, h, j]
        results = []
        for func in callables:
            x = func(x)
            results.append(x)
        return results
    

    类似tf.map_fn 这样的并行形式在这种情况下是不可能的,因为一个元素依赖于先前的元素;流程本质上是顺序的。

    【讨论】:

    • 是的,这绝对是最好的方法。如果让tf.scan 函数接受更广泛的输入集,Tensorflow 会很好。例如tf.scan(lambda initializer, fn: fn(initializer), [lambda x: x + 2, lambda x: x * 2, lambda x: x + 3, lambda x: x * 3], 0),但函数无法转换为张量支持的类型。
    猜你喜欢
    • 1970-01-01
    • 2020-09-14
    • 2023-03-20
    • 1970-01-01
    • 2018-05-13
    • 2021-01-21
    • 2013-03-10
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多