torch.cat
объединяется, как следует из названия, в указанном измерении.
Пример из документации расскажет вам все, что вам нужно знать:
x = torch.randn(2, 3) # shape (2, 3)
catted = torch.cat((x, x, x), dim=0) # shape (6, 3), e.g. 3 x stacked on each other
Помните, что составные тензоры должны иметь одинаковые измерение за исключением того, вдоль которого вы объединяете .
В приведенном выше примере оно ничего не делает, хотя и не жизнеспособно, так как не имеет второго аргумента (входные данные для применения map
to), см. здесь .
Предположим, что вместо этого вы сделаете это отображение:
map(lambda x: Variable(torch.cat(x,0)), samples)
Это создаст новый тензор формы [len(samples), x_dim_1, x_dim_2, ...]
при условии, что все samples
имеют такую же размерность за исключением 0
.
Тем не менее, это довольно запутанный пример, и определенно не следует так делать (torch.autograd.Variable
устарело, см. здесь ), это должно быть достаточно:
# assuming random.sample returns either `list` or `tuple`
def sample(self, batch_size):
return torch.cat(random.sample(self.memory, batch_size), dim=0)