在 TensorFlow.js 中访问 tensor2d 的单个值

Access to single values of tensor2d in TensorFlow.js

我正在尝试使用 TensorFlow.js 包访问二维矩阵第二行的元素。在下面,我使用 [0][1] 访问矩阵第一行的第一个和第二个元素,但老实说,我希望访问这些元素,例如 [0][0] 以获得 1[1][1] 得到 4

const t1 = tf.tensor2d([
                         [1,2],
                         [3,4]
                         ]);

    const tensorData = t1.dataSync();
    console.log("data[0] is " + tensorData[0]); // I get 1
    console.log("data[1] is " + tensorData[1]); // I get 2
    console.log("data[0][0] is " + tensorData[0][0]); // I get undefined, but I would expect to get 1

谁能解释一下为什么?我怎样才能访问矩阵第二行的单个元素?

Sintax tensorData[0][0] 是正确的,但看起来您的 tensorData var 等于 [1, 2, 3, 4],根本没有第二行。

访问前检查一下tensorData究竟包含什么。

如果想通过坐标获取张量值,有get方法。这是一个例子

const a=tf.tensor([1, 2, 3, 4], [2, 2])
b=a.get(0,0)
console.log(b)

你也可以看看下面的

请不要使用Tensor.get,这实际上会在我们进行主要版本更新时被弃用。

你应该使用:

const buffer = tensor.buffer();
const value = buffer.get(i, j, k);

如果要索引到多个值,请将 TensorBuffer 存储为一个对象。这将保留 CPU 上的所有值,并允许您快速索引它们。