如何在LibTorch中将(42,358)形状的张量扩展为(10,42,358)?
解决LibTorch中张量扩展/重复的参数错误问题
修复expand方法的参数错误
LibTorch的at::Tensor::expand方法要求传入IntArrayRef类型的目标形状,不能像Python版PyTorch那样直接传递多个独立参数。你需要把目标形状用花括号包裹成初始化列表,正确写法如下:
auto expanded_tensor = state_batch.expand({10, -1, -1});
这个操作和Python版逻辑一致,属于广播扩展,不会额外复制数据,仅改变张量的视图。
实现真实的重复拼接(非广播)
如果你的需求是将原张量在第一个维度上真实重复10次(而非仅逻辑扩展),推荐使用repeat方法,同样传入IntArrayRef类型的重复次数参数:
auto repeated_tensor = state_batch.repeat({10, 1, 1});
这里{10, 1, 1}表示第一个维度重复10次,后两个维度保持原次数不变,最终得到形状为(10, 42, 358)的张量,且数据是真实复制的,无需用torch::cat循环实现。
内容的提问来源于stack exchange,提问作者Ant
相关产品推荐
相关产品推荐

