例如,我想从头开始训练BERT模型,但要使用现有配置。以下代码是这样做的正确方法吗?
model = BertModel.from_pretrained('bert-base-cased')
model.init_weights()
因为我认为init_weights
方法将重新初始化所有权重。
第二个问题,是否要更改配置,例如隐藏层数。
model = BertModel.from_pretrained('bert-base-cased', num_hidden_layers=10)
model.init_weights()
我想知道上面是否是正确的方法。因为当我运行上面的代码时它们似乎没有错误。
答案 0 :(得分:2)
这样,您将不必要地下载和加载预训练的模型权重。您可以通过下载BERT配置来避免这种情况
config = transformers.AutoConfig.from_pretrained("bert-base-cased")
model = transformers.AutoModel.from_config(config)
您和本解决方案都假定您要使用与原始BERT相同的方式对输入进行标记,并使用相同的词汇表。如果要使用其他词汇表,可以在实例化模型之前在配置中进行更改:
config.vocab_size = 123456
类似地,您可以更改任何想要与原始BERT不同的超参数。