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

时间:2019-01-15 15:09:37

标签: typescript tensorflow angular7 tensorflow.js

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

确实:

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

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

如何保存形状并获取张量数组。 (手动重塑并非在所有情况下都是可行的,因为在此项目中我无法访问js矩阵库。)

1 个答案:

答案 0 :(得分:1)

dataSyncdata返回平坦的typedArray。这意味着tensor2d_array的形状为[4]。

与其获取与张量相同形状的数据,不如仅获取要检索的索引值,这将是实用的。话虽如此,如果由于某种原因,您想要先获取数据数组,然后再获取索引[i, j]的值,则此answer展示了如何检索对象的元素[i, j]数据是使用datadataSync

获得的

更新

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

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