重塑 PyTorch 张量,使矩阵是水平的

发布于 2025-01-11 17:37:35 字数 598 浏览 0 评论 0原文

我正在尝试将形状 (n, i, j) 的 3 维 PyTorch 张量中的 n 矩阵组合成形状 的单个二维矩阵(i,j*n)。这是一个简单的例子,其中 n=2, i=2, j=2:

m = torch.tensor([[[2, 3],
                   [5, 7]],
                  [[11, 13],
                   [17, 19]]])
m.reshape(2, 4)

我希望这会产生:

tensor([[ 2,  3, 11, 13],
        [ 5,  7, 17, 19]])

但它却产生:

tensor([[ 2,  3,  5,  7],
        [11, 13, 17, 19]])

我该怎么做?我尝试了 torch.cattorch.stack,但它们需要张量元组。我可以尝试创建元组,但这似乎效率低下。有更好的办法吗?

I'm trying to combine n matrices in a 3-dimensional PyTorch tensor of shape (n, i, j) into a single 2-dimensional matrix of shape (i, j*n). Here's a simple example where n=2, i=2, j=2:

m = torch.tensor([[[2, 3],
                   [5, 7]],
                  [[11, 13],
                   [17, 19]]])
m.reshape(2, 4)

I was hoping this would produce:

tensor([[ 2,  3, 11, 13],
        [ 5,  7, 17, 19]])

But instead it produced:

tensor([[ 2,  3,  5,  7],
        [11, 13, 17, 19]])

How do I do this? I tried torch.cat and torch.stack, but they require tuples of tensors. I could try and create tuples, but that seems inefficient. Is there a better way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灼疼热情 2025-01-18 17:37:35

要将 n + jreshape 结合起来,您需要它们在形状上是一致的。可以使用 swapaxes 修复它:

m = torch.tensor([[[2, 3],
               [5, 7]],
              [[11, 13],
               [17, 19]]])
m=m.swapaxes( 0,1 ) 
m.reshape(2, 4)

tensor([[ 2,  3, 11, 13],
        [ 5,  7, 17, 19]])

To combine n + j with reshape you need them consequent in shape. One can fix it with swapaxes:

m = torch.tensor([[[2, 3],
               [5, 7]],
              [[11, 13],
               [17, 19]]])
m=m.swapaxes( 0,1 ) 
m.reshape(2, 4)

tensor([[ 2,  3, 11, 13],
        [ 5,  7, 17, 19]])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文