Javascript 如何在Tensorflow.js中重新排列秩3张量的维度?
假设我有以下两个张量:Javascript 如何在Tensorflow.js中重新排列秩3张量的维度?,javascript,tensor,tensorflow.js,Javascript,Tensor,Tensorflow.js,假设我有以下两个张量: Tensor [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] var a=tf.tensor([[1,2],[3,4]]); var b=tf.张量([[5,6],[7,8]]); 我可以这样把它们叠在一起: var c=tf.stack([a,b]); 通过执行c.print(),我可以看到Tensorflow是如何叠加这两个张量的: Tensor [[[1, 2], [3
Tensor
[[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]]
var a=tf.tensor([[1,2],[3,4]]);
var b=tf.张量([[5,6],[7,8]]);
我可以这样把它们叠在一起:
var c=tf.stack([a,b]);
通过执行c.print()
,我可以看到Tensorflow是如何叠加这两个张量的:
Tensor
[[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]]
但是,我想将它们按如下方式堆叠:
Tensor
[[[1, 5],
[2, 6]],
[[3, 7],
[4, 8]]]
换句话说,如果张量c
的维度是A,B,c
,我如何将维度重新排序为B,c,A
我已经试着读过了,但是从我所看到的来看,没有一种方法可以做到这一点(除非我错过了它)
我也尝试过用普通Javascript数组实现这一点,但我注意到这是非常低效和缓慢的(此代码可根据请求提供,我怀疑这是因为在处理多个数组~3Kx2K时,它在堆上分配了很多)
如何将张量的尺寸从
a,B,C
重新排序为B,C,a
?两个张量可以沿轴-1堆叠
const a=tf.tensor([[1,2],[3,4]]);
常数b=tf.张量([[5,6],[7,8]]);
常数c=tf.stack([a,b],轴=-1);
c、 打印()
那么
var a = tf.tensor([[1,2],[3,4],[10,11]]);
var b = tf.tensor([[5,6],[7,8],[20,21]]);
x = a.transpose().stack(b.transpose()).transpose();
x.print();
希望这有帮助……非常感谢!这就成功了。这也是2个答案中最快的一个,因此将其标记为答案。Ref(基准测试代码:)。谢谢你的回答!这就像一个符咒,但不幸的是,它比另一个答案慢,所以我把这一个标记为解决方案。不过还是要谢谢你!