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

ONNX版RoBERTa分类模型报错:'Tensor'对象无'keys'属性

问题原因

ONNX Runtime 的 ort_session.run() 方法要求第二个参数是输入节点名称与对应张量的字典,而非直接传入单个张量。当你直接传入 Tensor 对象时,Runtime 会将其当作字典尝试调用 keys() 方法,因此触发 AttributeError: 'Tensor' object has no attribute 'keys'。

解决方案

1. 确认模型的输入节点名称

运行以下代码获取模型定义的输入节点名称,避免传错键名:

import onnxruntime as ort

# 加载你的ONNX模型
ort_session = ort.InferenceSession("your_model_path.onnx")
# 提取所有输入节点的名称
input_names = [inp.name for inp in ort_session.get_inputs()]
print("模型输入节点名称:", input_names)

2. 构造符合要求的输入字典

将批量处理得到的张量,以「输入节点名称: 张量」的键值对形式包装成字典,再传入 run() 方法:

# 假设input_tensor是你处理好的批量张量(如形状为[74, 序列长度]的Tensor/NumPy数组)
# 取第一个输入节点名称作为键(如果模型有多个输入,需全部加入字典)
input_dict = {input_names[0]: input_tensor}

# 执行批量推理
outputs = ort_session.run(None, input_dict)

注意事项

  • 如果模型需要多个输入(如input_ids、attention_mask),需将所有对应的张量都加入字典,键名必须和模型输入节点名称完全匹配。
  • 确保张量的形状、数据类型与模型要求一致(例如用 NumPy 数组而非 PyTorch Tensor,或者转换为 ONNX Runtime 兼容的张量类型)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:32:11