AllenNLP实践——fine-tune

AllenNLP的commands命令中有一个fine-tune命令,可以在新的数据集上训练模型,或者在原来的模型上继续训练。
fine-tune命令跳过配置文件的model部分,即网络结构是要固定下来的,其他参数可以变。
比如可以在配置文件设置trainer的no_grad,冻结一些层,让他们不进行参数更新,而其他层的参数正常更新。

以qanet.jsonnet为例

  1. 在windows中首先要去掉//的注释和变量,使它成为json的格式
  2. 执行dry-run命令,可以打印输出哪些层是可训练的,哪些层是冻结的
  3. 修改配置文件,在trainer中添加no_grad,其中用一个List的正则表达式,定义哪些层是需要冻结的
  4. 执行dry-run命令,验证是否设置成功

正则表达式

以下是我添加的no_grad,目的是冻结前面所有层,只训练最后的两个Linear。(“.”表示任意字符,“*”表示前面的字符可以重复多个,. * layer. *表示找到所有名字中带有layer的层)

"no_grad":
	    [".*text_field_embedder.*", ".*layer.*", ".*matrix.*"]

dry-run得到的结果,说明设置正确。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值