簡體   English   中英

pytorch 修改預訓練模型,舊權重會重新初始化嗎?

[英]pytorch modifying pretrained model, will the old weight get re-initialized?

我正在 pytorch 中修改一個預訓練的高效網絡模型。 我正在按順序執行以下操作:

  1. 創建默認模型,加載 imagenet 權重。

  2. 然后,改變第一層的通道數,加幾層就刪幾層。

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_stemmodel._fc 然后,是的,這些將被隨機初始化,這意味着加載的權重將不再用於這些層。 模型的其余部分當然會保持不變,並將使用加載的權重。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM