Python 为什么可以';我不能用torch.cat附加一个PyTorch张量吗?

Python 为什么可以';我不能用torch.cat附加一个PyTorch张量吗?,python,pytorch,Python,Pytorch,我有: 这将产生: import torch input_sliced = torch.rand(180, 161) output_sliced = torch.rand(180,) batched_inputs = torch.Tensor() batched_outputs = torch.Tensor() print('input_sliced.size', input_sliced.size()) print('output_sliced.size', output_sliced.

我有:

这将产生:

import torch

input_sliced = torch.rand(180, 161)
output_sliced = torch.rand(180,)

batched_inputs = torch.Tensor()
batched_outputs = torch.Tensor()

print('input_sliced.size', input_sliced.size())
print('output_sliced.size', output_sliced.size())

batched_inputs = torch.cat((batched_inputs, input_sliced))
batched_outputs = torch.cat((batched_outputs, output_sliced))

print('batched_inputs.size', batched_inputs.size())
print('batched_outputs.size', batched_outputs.size())


我需要批处理的
要追加,但是
torch.cat
不起作用。我做错了什么?

假设你是在循环中做的,我认为这样做更好:

导入火炬
批次输入,批次输出=[],[]
对于范围(10)内的i:#假设批次大小=10
批次输入追加(torch.rand(180161))
批次输出追加(torch.rand(180,))
批次输入=火炬堆(批次输入)
批次输出=火炬堆(批次输出)
打印(批输入.形状)#输出:火炬.尺寸([10180161])
打印(批量输出.形状)#输出:火炬.尺寸([10180])

如果您事先知道生成的
批次*
形状,您可以预先分配最终的
张量
,只需将每个样本分配到批次中相应的位置即可。这将更加节省内存。

这完全符合预期。你的代码完整吗?
batched.*
应该是空张量吗?预期的输出是什么?我希望批处理为[118016],没有干净的替代品。我假设你想一遍又一遍地这样做,所以问题是:你需要中间的“cat”来产生
张量,还是只需要最后的
批处理*
?正确-我想一遍又一遍地这样做。我只需要最后一批。
input_sliced.size torch.Size([180, 161])
output_sliced.size torch.Size([180])

batched_inputs.size torch.Size([180, 161])
batched_outputs.size torch.Size([180])