【发布时间】:2022-01-12 12:18:18
【问题描述】:
在pytorch中,我想使用一个预训练的模型,训练我的模型给模型结果添加一个delta,即:
╭----- (pretrained model) ------ result ---╮
input------------- (my model) --------- Δresult --+-- final_result
这是我所做的:
- 使用
load_state_dict加载预训练模型的参数 - 设置所有预训练模型的参数
requires_grad = False - 创建我的模型并开始训练
但是在训练过程之后,当我检查result(预训练模型的输出)时,我发现它与原始预训练模型输出不匹配。我仔细比较了预训练模型的参数,唯一的变化是BatchNorm2d的running_mean、running_var和num_batches_tracked(因为我设置了所有预训练模型的参数requires_grad = False),当我把这三个参数改回原始的,result 匹配原始预训练模型输出。
我不希望对预训练模型进行任何更改。那么有没有办法修复running_mean、running_var和num_batches_tracked?
【问题讨论】:
标签: python pytorch pre-trained-model batch-normalization