加载预训练模型
所有参数
{"model":
"initializer": [
[
"*.weight|*.bias",
{
"type": "pretrained",
"weights_file_path": "./best.th"
}
]
]
}
部分参数
一部分可以设置随机初始化,另一部分用预训练的
(应该可以把预训练放到前面,对所有设置预训练,然后把需要随机初始化的放到后面)
[".*linear_layers.*weight", {"type": "xavier_normal"} ] ,
[
"linear_1.weight|linear_2.weight",
# linear_1和linear_2使用预训练模型参数 # 正则表达式 linear_1.* # linear_1.weight|linear_1.bias
{
"type": "pretrained",
"weights_file_path": "temp_file",
"parameter_name_overrides": "linear_2.weight": "linear_3.weight"
# 其中linear_2用linear_3的进行初始化,但lay大小要一致
}
]
寻找合适的初始学习率
find_learning_rate:注意fine-tuning之前试着找一个合适的初始学习率。
模型训练后期
注意到调低学习率之后,训练很慢,主要是最后一层权值有更新。
TODO:冻结前面的层,训练最后一层。(先进行dry-run,获得所有layer的名字)
TODO:
{"trainer":
{
"no_grad":
[[".*text_field_embedder.*"],
[".*text_field_embedder.*", ".*encoder.*"]]
}
}