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(基准测试代码:)。谢谢你的回答!这就像一个符咒,但不幸的是,它比另一个答案慢,所以我把这一个标记为解决方案。不过还是要谢谢你!