首页 > 解决方案 > Tensorflow.js 如何计算张量中每个值出现的次数?

问题描述

我有一个包含整数的一维张量,例如 [3,2,1,2,1,2,3,1,1,],我想计算每个整数出现的次数。我希望输出用另一个一维张量表示,即输出上方的张量将是 [0,4,3,2]。

我知道这可以在 Tensorflow 的 Python API 中完成,例如使用 tf.unique_with_counts,但我还没有找到在 Tensorflow.js API 中执行此操作的方法。

标签: javascripttensorflowtensorflow.js

解决方案


我找到了一个解决方案,方法是使用 tf.oneHot 创建只有一维张量中每个元素给出的索引处的 1 和其他地方的零的张量,即“2”的 [0,0,1,0] 形式在一维张量中,然后沿第 0 轴对输出求和。

代码是

    const amounts = tf.tensor1d([3,2,1,2,1,2,3,1,1,],'int32');
    const counts = tf.oneHot(amounts, 4);
    const axis = 0;
    counts.sum(axis); // Outputs [0, 4, 3, 2]

推荐阅读