网站搜索

typescript - Tensorflow.js `tensor2d` 转换为数值,同时保持形状


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

确实:

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

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

我如何保存张量的形状并获得它的数组。(在所有情况下手动重塑形状并不现实,因为我在这个项目中无法使用 JavaScript 矩阵库。)

答案#1

dataSync 和 data 返回一个扁平化的 typedArray。这意味着 tensor2d_array 将具有形状 [4]。

与其获取与张量形状相同的数据,也许只获取你想要检索的索引值会更实用。话虽如此,如果出于某种原因,你希望先获取数据数组,然后再获取索引 [i, j] 处的值,这个答案展示了如何使用 data 或 dataSync 获取的数据来检索元素 [i, j]。

更新

自 版本 15 起,可以使用 tensor.array() 或 tensor.arraySync() 获取与张量形状相同的数组