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

训练BERT模型时遇'torch.dtype'无'base_dtype'属性错误求助

问题解决思路及方案

问题根源

你遇到的'torch.dtype' object has no attribute 'base_dtype'错误,核心原因是传入的字典book存在以下两类问题之一:

  • 字典键名和TensorFlow版BERT模块预期的输入键不匹配,导致内部处理时误将无关数据(比如PyTorch dtype)传入TokenEmbedding层;
  • 字典中混入了PyTorch类型的dtype参数,而TensorFlow的BERT模块无法识别PyTorch的类型。

具体解决步骤

  • 修正字典键名:
    TensorFlow版BERT(不管是官方实现还是Hugging Face的TFBertModel)预期的输入键固定为input_ids、attention_mask、token_type_ids,你需要把原来的ids改成input_ids,mask改成attention_mask,确保键名完全匹配。
  • 清理非张量数据:
    检查book字典,删除所有包含PyTorch dtype(比如torch.float32)的键值对,只保留TensorFlow张量类型的输入(tf.Tensor),同时确认所有张量的dtype是TensorFlow支持的类型(比如input_ids用tf.int32)。
  • 正确调用BERT模块:
    如果使用Hugging Face的transformers库,传入字典时需要用**解包,而不是直接传字典对象。示例代码如下:
    # 构造符合要求的输入字典
    book = {
        'input_ids': ids,
        'attention_mask': mask,
        'token_type_ids': token_type_ids
    }
    # 解包字典传入BERT模块
    x = self.bert_module(**book)
    
  • 排查TokenEmbedding层输入:
    在调用BERT模块前,打印book['input_ids'].dtype,确认输出是TensorFlow的dtype(比如<dtype: 'int32'>),而非PyTorch的类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:06:02