当前位置: 首页 > article >正文

[Bert] 提取特征之后训练模型报梯度图错误

报错:
RuntimeError: stack(): functions with out=… arguments don’t support automatic differentiation, but one of the arguments requires grad.

或者

RuntimeError: Trying to backward through the graph a second time (or directly access saved tensors after they have already been freed). Saved intermediate values of the graph are freed when you call .backward() or autograd.grad(). Specify retain_graph=True if you need to backward through the graph a second time or if you need to access saved tensors after calling backward.

原因:

训练模型的时候,输入数据x,y不应该requires_grad,而bert模型输出的embeddings默认是requires_grad的,所以会报错。

解决方法:

提取完embeddings之后,使用 embeddings.detach() 解除绑定就行了。

最后的代码:

from transformers import BertTokenizer, BertModel

class BertFeatureExtractor:
    def __init__(self):
        self.tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
        self.model = BertModel.from_pretrained('bert-base-chinese')

    def extract_features(self, text: str):
        inputs = self.tokenizer(text, return_tensors="pt")
        if len(inputs["input_ids"]) > 512:
            inputs["input_ids"] = inputs["input_ids"][:512]
            inputs["attention_mask"] = inputs["attention_mask"][:512]
        outputs = self.model(**inputs)
        return outputs.last_hidden_state[:,0,:]
    
feat = feat.detach()

http://www.kler.cn/a/458908.html

相关文章:

  • 数据可视化-16. 日历图
  • Java List 集合详解:基础用法、常见实现类与高频面试题解析
  • 深度学习论文: RemDet: Rethinking Efficient Model Design for UAV Object Detection
  • goView二开低代码平台1.0
  • 【Unity】 HTFramework框架(五十七)通过Tag、Layer批量搜索物体
  • 谷粒商城项目125-spring整合high-level-client
  • Effective C++ 条款42:了解 typename 的双重意义
  • 玉米中的元基因调控网络突出了功能上相关的调控相互作用。\ca.19a5.R
  • vue项目利用webpack进行优化案例
  • 小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面
  • SAP-MM-物资库存调度调剂清单
  • 深入探讨C++中的互斥锁管理:`std::lock_guard`与`std::unique_lock`
  • C++ 设计模式:模板方法(Template Method)
  • Zookeeper中version-2目录下存放数据
  • 生态碳汇涡度相关监测与通量数据分析实践技术应用
  • mysql一个表只能由一个自动递增列吗
  • CKA认证 | Day7 K8s存储
  • 封装一个自己的JS或TS库,并发布到npm上
  • 网络基础入门到深入(2):网络协议-TCP/IP协议栈
  • PowerShell 常见问题解答
  • 深度学习工作:从追求 SoTA 到揭示新现象
  • 数据库的概念和操作
  • Mysql高级
  • 天通卫星技术,保障无信号区域的高效通信与监测
  • C++笔记4:C和C++混合编程,C不能识别C++的类内函数编译报错怎么办
  • 【优选算法】Sliding-Chakra:滑动窗口的算法流(下)