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

Hugging Face微调BERT时EagerTensor无to_tensor属性报错求助

问题根因

这个报错和TensorFlow版本无关,是Hugging Face datasets 库版本迭代导致的接口变化:

  • 旧版本datasets库中,数据集调用.with_format('tensorflow')后,按字段取到的是DatasetTensor类型对象,需调用.to_tensor()方法转为规整的EagerTensor
  • 新版本datasets库优化了接口,调用.with_format('tensorflow')后直接返回EagerTensor,不再提供to_tensor()方法
    你本地M1环境和Colab环境的datasets库版本不一致,才会出现相同TensorFlow版本下运行表现不同的情况。

排查&修复方案

  • 先验证版本差异:分别在两个环境执行如下命令,确认datasets库版本号是否不同
    import datasets
    print(datasets.__version__)
    
  • 方案1:适配新版本接口,直接移除.to_tensor()调用即可,修改后的代码如下
    features = {x: dataset_tok[x] for x in tokenizer.model_input_names}
    
  • 方案2:兼容新旧版本接口,增加异常捕获逻辑,适配所有环境
    features = {}
    for input_name in tokenizer.model_input_names:
        val = dataset_tok[input_name]
        try:
            features[input_name] = val.to_tensor()
        except AttributeError:
            features[input_name] = val
    
  • 方案3:对齐原有运行环境的依赖版本,在Colab安装和本地完全一致的datasets版本即可,把下方命令的版本号替换为你本地的版本号
    !pip install datasets==[你本地的datasets版本号]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:09:02