解决Bert预训练模型过大的问题

预训练模型

问题:关于BERT预训练模型过大,达到1.3G。
相关问题出现原因:
  • 其实Bert在保留预训练模型的时候不仅保留了结果参数,同时还保存了大量的中间参数,所以才会达到1G以上。
解决方案:过滤中间参数
sess = tf.Session()
imported_meta = tf.train.import_meta_graph('./model.ckpt-322.meta')
imported_meta.restore(sess, './model.ckpt-322')
my_vars = []
for var in tf.all_variables():
    if 'adam_v' not in var.name and 'adam_m' not in var.name:
        my_vars.append(var)
saver = tf.train.Saver(my_vars)
saver.save(sess, './model.ckpt')
效果说明:
  • 执行完以上代码之后,新保存的模型降到了400M左右,即:问题解决。
  • 亲测有效!!!

相关参考外网链接:

https://github.com/google-research/bert/issues/99
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源介绍】 基于Pytorch+Bert模型实现自然语言转结构化sql源码+项目说明+数据集.zip 将自然语言转为机器可以理解的SQL语言,旨在拉近用户与结构化数据间的距离,实现人机交互体验升级。实现基本思路: 1. 定义结构化`sql` 2. `label`训练数据 3. 采用`bert`预训练模型 4. 下游模型构建 5. `pytorch`编程 6. 模型训练 7. 模型预测 定义结构化`sql` 首先,明确算法输入为自然语言,算法输出为结构化`sql`。 采用`bert`预训练模型 解决自然语言转结构化`SQL`问题涉及到自然语言识别(`NLP`),同时考虑到`label`数据数据量小的问题,采用已经预训练好的模型`bert`作为本算法的上游模型,然后本算法模型在`bert`模型的基础上搭建下游模型,该下游模型主要处理的问题是[结构化`SQL`](##定义结构化`sql`)中所分析出来的**多分类问题** 下游模型构建 由[结构化`SQL`](##定义结构化`sql`)可知,下游模型需要处理的是**多分类问题**,主要需要训练的内容是**`agg`聚合操作、`conn_op`连接符、`cond_op`条件操作符、`cond_vals`条件操作值**。主要存在的问题是**查询列、条件数量是不固定的**,由于已经对列进行的确定的编码,因此**查询列、条件数量的最大值是确定的**。因此**`agg`、`cond_op`、`cond_vals`会对所有列进行分类训练**。 从上述思路中,还存在可优化的点是**`cond_op`与`cond_vals`之间存在必然的数量关系**。即假设某个`question`训练出来的`cond_op`的数量是2,那么`cond_vals`的数量必然也是2。为了优化该问题,将模型拆分成两部分,第一部分训练&预测`agg`和`cond_op`,第二部分训练&预测`cond_vals`,**预测时接受第一部分模型预测出来的cond_op的数量**。整体结构如下图所示: 【备注】 该项目是个人毕设/课设/大作业项目,代码都经过本地调试测试,功能ok才上传,高分作品,可快速上手运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载使用,也欢迎交流学习!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值