[英]pytorch modifying pretrained model, will the old weight get re-initialized?
我正在 pytorch 中修改一個預訓練的高效網絡模型。 我正在按順序執行以下操作:
創建默認模型,加載 imagenet 權重。
然后,改變第一層的通道數,加幾層就刪幾層。
from efficientnet_pytorch import EfficientNet
from efficientnet_pytorch.utils import Conv2dStaticSamePadding
PATH = "../input/efficientnet-pytorch/efficientnet-b0-08094119.pth"
model = EfficientNet.from_name('efficientnet-b0')
model.load_state_dict(torch.load(PATH))
# augment model with 4 channels
model._conv_stem = Conv2dStaticSamePadding(4, 32, kernel_size = (3,3), stride = (2,2),
bias = False, image_size = 512)
model._fc = torch.nn.Linear(in_features=1280, out_features=2, bias=True)
我的問題是:我加載的原始重量會發生什么變化? 它會在那里還是所有模型都會被隨機初始化?
如果您正在重新定義某些層,您似乎是在使用model._conv_stem
和model._fc
。 然后,是的,這些將被隨機初始化,這意味着加載的權重將不再用於這些層。 模型的其余部分當然會保持不變,並將使用加載的權重。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.