从头开始 Fine-Tune/Train HuggingFace 模型的正确方法 (PyTorch)
Correct Way to Fine-Tune/Train HuggingFace's Model from scratch (PyTorch)
例如,我想从头开始训练一个 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()
不知以上方法是否正确。因为当我 运行 上面的代码时它们似乎没有错误。
这样,您将不必要地下载和加载 pre-trained 模型权重。您可以通过下载 BERT 配置来避免这种情况
config = transformers.AutoConfig.from_pretrained("bert-base-cased")
model = transformers.AutoModel.from_config(config)
你的解决方案和这个解决方案都假设你想以与原始 BERT 相同的方式对输入进行标记化,并使用相同的词汇表。如果你想使用不同的词汇表,你可以在实例化模型之前更改配置:
config.vocab_size = 123456
同样,您可以更改任何想要与原始 BERT 不同的超参数。
例如,我想从头开始训练一个 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()
不知以上方法是否正确。因为当我 运行 上面的代码时它们似乎没有错误。
这样,您将不必要地下载和加载 pre-trained 模型权重。您可以通过下载 BERT 配置来避免这种情况
config = transformers.AutoConfig.from_pretrained("bert-base-cased")
model = transformers.AutoModel.from_config(config)
你的解决方案和这个解决方案都假设你想以与原始 BERT 相同的方式对输入进行标记化,并使用相同的词汇表。如果你想使用不同的词汇表,你可以在实例化模型之前更改配置:
config.vocab_size = 123456
同样,您可以更改任何想要与原始 BERT 不同的超参数。