最近遇到這個奇妙的錯誤
in batch_norm return torch.batch_norm RuntimeError: running_mean should contain 16 elements not 2048
主要我這邊使用 fastai vision_learner 來產生模型
照理說是不會有錯
但是當我這次用到 swinv2_base_window12to16_192to256_22kft1k 這個模型時候
他在判斷輸入參數數量卻出錯
造成在 batch_norm 時候參數對不起來
所以我這邊的解決方案是自定義自己的 custom_head
範例如下
newHead = None if cus_head: newHead = create_head(nf=8, n_out=2) learn = vision_learner( dls = dls, arch = modelKey, wd = 0.01, custom_head = newHead, pretrained = self.pretrained, loss_func = LabelSmoothingCrossEntropyFlat(), cbs = [MixUp()], opt_func = Adam, bn_final = True, metrics = [ accuracy, Precision(average='weighted'), ] ).to_fp16()
以上程式碼是參考
主要是看 newHead = create_head(nf=8(自行調整), n_out=2(自行調整-輸入分類))
以及 custom_head = newHead,
就是說必須要直接指定要接上去的參數數量
因為這錯誤就是因為 fastai 的 num_features_model 抓參數輸出時候發生問題
但是通常來說
是不會發生問題的...
給大家參考囉
留言板
歡迎留下建議與分享!希望一起交流!感恩!