You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch搭建聊天机器人时torch.stack报tuple of Tensors错误如何解决

报错根因与修复方案

报错原因梳理

  • 第一次报错:torch.stack的首个入参要求是由张量构成的列表/元组,初始代码传入torch.Tensor(inputs)生成的单个张量,不符合参数要求,触发类型错误。
  • 第二次报错:indexes_from_sentence返回的vec为列表类型,未提前转为张量就被放入inputs列表传入torch.stack,列表元素不符合张量要求,触发新的类型错误。另外PyTorch 0.4及之后版本Variable已与张量合并,无需额外用Variable包裹张量。

修复后的代码

def variable_from_sentence(sentence):
    vec, length = indexes_from_sentence(sentence)
    # 先将列表类型的vec转为张量,再放入列表供stack处理
    inputs = [torch.tensor(vec)]
    lengths_inputs = [length]
    batch_inputs = torch.stack(inputs, 1)
    if hp.cuda:
        batch_inputs = batch_inputs.cuda()
    return batch_inputs, lengths_inputs

补充说明

如果你的PyTorch版本低于0.4必须保留Variable,只需将stack生成的结果用Variable()包裹即可,不要改动传入stack的参数结构。生成张量时建议使用torch.tensor()而非torch.Tensor(),前者会自动匹配输入数据的类型,后者默认生成float32类型张量,与索引类数据常用的int64类型不匹配,容易引发后续运算报错。

内容的提问来源于stack exchange,提问作者user14570244

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:36:03