def _resnet( arch: str, block: Type[Union[BasicBlock, Bottleneck]], layers: List[int], pretrained: bool, progress: bool, **kwargs: Any) -> ResNet: model = ResNet(block, layers, **kwargs) if pretrained: state_dict = load_state_dict_from_url(model_urls[arch], progress=progress) for k in list(state_dict.keys()): #固定遍历对象 print(k) if k == "fc.weight" or k == "fc.bias": state_dict.pop(k) #删除最后一层的模型参数 model.load_state_dict(state_dict,strict=False) #非严格加载模型参数 return model
您好,由于PAI-Blade仅支持ScriptModule,因此需要转换模型格式,代码如下:
首先,需要在阿里云上安装PyTorch和torchvision,然后使用以下代码从torchvision加载ResNet50模型:
由于与resnet50的分类数不一样,所以在调用时,要使用num_classes=分类数。 如果需要加载模型本身的参数,需要使用pretrained=True。由于最后一层的分类数不一样,所以最后一层的参数数目也就不一样,所以在加载模型参数时要去掉最后一层