Tensorflow.js 将 `tensor2d` 转换为数值,同时保留形状

Tensorflow.js `tensor2d` to numerical values while preserving the shape

在 Angular7 项目中使用 tensorflowjs,我在访问 tensor2d 对象的数值时遇到问题。

确实:

let tensor2d = tf.tensor2d( [[1,2],[3,4]])
let tensor2d_array = tensor2d.dataSync()

将给出形状为 (4,)Array 对象,而不是我希望的 (2,2,)

如何保持形状并获得我的张量数组。 (在所有情况下手动重塑并不实用,因为我无法访问此项目中的 js 矩阵库..)。

dataSync and data returns a flatten typedArray。这意味着 tensor2d_array 的形状为 [4].

与其获取与张量形状相同的数据,不如仅获取要检索的索引值更实用。话虽如此,如果出于某种原因,您想在获取索引 [i, j] 处的值之前先获取数据数组,此 显示了如何检索元素 [i, j]使用 datadataSync

获取数据

更新

version 15以来,可以使用tensor.array() or tensor.arraySync()

得到与张量形状相同的数组