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])