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

使用SentenceTransformer生成词向量报错RuntimeError: stack expects a non-empty TensorList

报错根因

RuntimeError: stack expects a non-empty TensorList报错的核心原因是 传入encode方法的fifteen_percent_list是空列表。sentence_transformers的encode方法处理空输入时,生成的嵌入张量列表为空,调用torch.stack拼接空列表就会触发该错误。
第二个embeddings2生成流程正常,是因为rest_of_queries_list取了前10000条有效数据,不存在空输入问题。

排查步骤

在调用encode前新增校验代码确认输入状态:

# 打印列表长度和前5个元素,确认是否有有效内容
print(len(fifteen_percent_list), fifteen_percent_list[:5])

如输出长度为0,重点检查两处问题:

  • 上游fifteen_percent(你的代码里拼写为fiften_percent,存在少写一个e的笔误,可能拿了未赋值的空变量)的筛选逻辑,是不是过滤条件过严导致无符合要求的数据
  • 列表转换逻辑是否异常,比如源变量本身就是空迭代对象

修复方案

from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('distilbert-base-nli-stsb-mean-tokens')

# 修正变量名拼写,同时增加非空校验
fifteen_percent_list = list(fifteen_percent)
if not fifteen_percent_list:
    raise ValueError("fifteen_percent无有效数据,请检查上游筛选逻辑")

embeddings1 = model.encode(fifteen_percent_list, convert_to_tensor=True)

rest_of_queries_list = list(set(rest_of_queries))[:10000]
embeddings2 = model.encode(rest_of_queries_list, convert_to_tensor=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:48:04