【问题标题】:Check for broadcasting compatibility in Tensorflow - C++ API检查 Tensorflow 中的广播兼容性 - C++ API
【发布时间】:2016-02-06 04:42:55
【问题描述】:

我正在 TensorFlow 中实现元素操作。许多 TensorFlow 操作,例如添加,支持广播(from numpy)。如果遵守以下规则,则可以进行广播:

当对两个张量进行操作时,它们的形状应该按元素进行比较。该过程从尾随维度开始,然后向前推进。当两个维度相等或其中一个为 1 时,它们是兼容的。如果不满足这些条件,则抛出异常,表明张量具有不兼容的形状。结果张量的大小是输入数组每个维度上的最大大小。

TensorFlow C++ API 是否提供任何方法来比较两个张量的兼容性?或者,最快的方法是什么?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    TensorFlow 中所有基于元素的二进制操作的内核实现都派生自 BinaryOpShared 类,该类通过帮助程序类 BinaryOpState 进行兼容性检查。也许,您可以简单地从BinaryOpShared 派生您的内核类并免费获得兼容性检查。

    【讨论】:

    • 我观察到以下我不确定是否正确的行为。给定两个大小为 [3, 4] 的张量,BCast 运算符返回一个大小为 [12] 的新张量。你能评论一下吗?
    • 当 TF 计算 (x op y) 时,其中 x 和 y 的形状为 [3, 4] 并且 op 是二元元素运算符,TF 首先将 x 和 y 重塑为一维张量形状为 [12] 的,计算一维维度的 op,然后将结果重新整形为 [3, 4] 作为最终输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多