我将在这里描述我的意图。我想通过tf-hub函数hub.module(bert_url,trainable = True)导入BERT预训练模型,并将其用于文本分类任务。我计划使用一个大型语料库来微调BERT的权重,以及一些以BERT输出为输入的密集层。然后,我想冻结BERT的层,并仅训练BERT之后的密集层。如何有效地做到这一点?
答案 0 :(得分:0)
您提到了Hub的TF1 API hub.Module
,所以我想您正在编写TF1代码并使用TF1兼容的Hub资产google / bert / ...,例如https://tfhub.dev/google/bert_cased_L-12_H-768_A-12/1
您是否要在两个培训阶段中分别运行程序?如果是这样,也许您可以在第二次运行中从trainable=True
调用中删除hub.Module
。这不会影响变量名称,因此您可以从第一次运行中恢复训练结果,包括BERT调整后的权重。 (请注意:集线器附带的预先训练的砝码。模块仅在训练开始时用于初始化;恢复检查点会覆盖它们。)