Convnext 的源代码内部:
self.classifier = nn.Sequential(
norm_layer(lastconv_output_channels), nn.Flatten(1), nn.Linear(lastconv_output_channels, num_classes)
)
当我调用预训练模型并且我想在分类器层中进行更改时
norm_layer
未定义并且我不知道如何从源代码中使用它
model = torchvision.models.convnext_base(prtrained=True, stochastic_depth_prob=0.1,
layer_scale=1e-4)
model.classifier = nn.Sequential(
** norm_layer**(1024), nn.Flatten(1), nn.Linear(1024, 7)
)
请谁能帮忙写正确吗?
norm_layer
的默认值在第113行这里给出,如
norm_layer = partial(LayerNorm2d, eps=1e-6)
如果您导入
from torchvision.models.convnext import LayerNorm2d
和 from functools import partial
,一切都会被明确定义。
使用这个(并修复
pretrained
的拼写),你的代码应该可以工作。 :)