在Tensorflow.js中获取张量中项的值

18

在Tensorflow.js中指定索引后,如何获取张量的值?

5个回答

21

您可以使用datasync实现此功能。

const newTensor = tf.tensor2d([[2,4],[5,6]]);
const tensorData = newTensor.dataSync();
console.log("data[0] is " + tensorData[0]);
console.log("data[3] is " + tensorData[3]);

https://codepen.io/anon/pen/NMKgeO?editors=1011


3
您可以使用以下更强大的方法:

tensor.buffer().get(0, 0);

这将允许您索引张量的逻辑坐标(2D坐标,而不是压缩的1D坐标)。请参见链接

你会如何在Python的Tensorflow Keras中实现这个? - gustavz

2
const newTensor = tf.tensor2d([[2,4], [5,6]])
newTensor.get([0]) ##returns 2
newTensor.get([3]) ##returns 6

感谢上帝,所有这些都会返回一个数字而不是张量。

它不起作用:错误:get()中的坐标数量必须与张量的秩匹配 - JavaRunner
@JavaRunner,你能分享一下代码/张量吗?它为什么不能工作? - Pranay Aryal
3
最新版本中已经不存在这个“get”函数。 - Khoi

1

或者你也可以使用切片来获取值:

let value = tensor.slice([i,j], [1, 1]);

或者

let value = tensor.slice([i,j], [1, 1]).arraySync()[0][0];

1

tf.Tensor.dataSync() 不会保留原始形状。如果您想要保留形状,可以使用 tf.Tensor.arraySync()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接