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

如何将Ragged Tensor转为列表?遇Eager模式报错求解决方案

解决Ragged Tensor转列表报错及填充问题

针对你使用Subword Tokenizer得到Ragged Tensor后,调用to_list()触发ValueError: to_list can only be used in eager mode(但tf.executing_eagerly()返回True)的问题,以及后续需要填充到(64,128)维度的需求,提供以下可行方案:

方法1:通过Numpy中转转换为列表

先将Ragged Tensor转为嵌套Numpy数组,再转换为Python列表:

token = tokenizer.pt.tokenize(text)
token_as_list = token.numpy().tolist()

方法2:直接填充为固定形状Tensor再转列表

既然最终需要调整维度到(64,128),可以直接利用Ragged Tensor的to_tensor()方法完成填充,再转列表,无需手动处理:

token = tokenizer.pt.tokenize(text)
# 使用默认填充值(示例为0)将张量填充到目标形状(64,128)
padded_token = token.to_tensor(default_value=0, shape=(64, 128))
token_as_list = padded_token.numpy().tolist()

补充说明:如果你的代码运行在tf.function装饰的函数内部,即使全局处于eager模式,函数内部会切换到图模式,这时候to_list()会触发报错,上述两种方法依然适用,因为numpy()在图模式下对可追踪张量能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:15:28