1

我是 Pytorch 的新手。

假设我有一个具有这种形状的张量torch.size([1, 25200, 11])

我想将它分成 3 个较小的张量,3 个较小的张量中的每一个都具有 1st 的形状。 torch.size([1, 3, 80, 80, 11])第二torch.size([1, 3, 40, 40 , 11])3rd torch.size([1, 3, 20, 20, 11)].

非常感谢您的帮助。

谢谢

解释这些数字:

80x80x3 = 19200

40x40x3 = 4800

20x20x3=1200 ,加上这些结果我们有 25200,1 是批量大小,11 是类 + xywh

4

2 回答 2

1

像这样的东西应该工作。

import torch
tensor = torch.ones((1, 25200, 11))
first_break = tensor[:, 0:19200, :].view((1, 3, 80, 80, 11))
second_break = tensor[:, 19200:19200+4800, :].view((1, 3, 40, 40, 11))
third_break = tensor[:, 19200+4800:19200+4800+1200, :].view((1, 3, 20, 20, 11))

如果您提供更多解释和上下文,则代码可能会被清理并且不会被如此硬编码,或者这可能会给您足够的运行时间。

于 2021-06-22T16:01:34.393 回答
0

你有没有尝试过:


  T1= torch.narrow(YourTensor, 1,0 , 80*80*3)
  T1v = T1.view(1,3,80,80,11)

  T2= torch.narrow(YourTensor, 1,80*80*3 , 40*40*3)
  T2v = T2.view(1,3,40,40,11)

  T3= torch.narrow(YourTensor, 1,80*80*3 + 40*40*3 , 20*20*3)
  T3v = T3.view(1,3,20,20,11)

于 2021-06-22T17:07:30.223 回答