繁体   English   中英

如何在 PyTorch 中使用 Inception model 进行迁移学习?

[英]How to use the Inception model for transfer learning in PyTorch?

我创建了一个 PyTorch torchvision model 用于迁移学习,使用预先构建的ResNet50基础 model,如下所示:

        # Create base model from torchvision.models
        model = resnet50(pretrained=True)
        num_features = model.fc.in_features

        # Define the network head and attach it to the model
        model_head = nn.Sequential(
            nn.Linear(num_features, 512),
            nn.ReLU(),
            nn.Dropout(0.25),
            nn.Linear(512, 256),
            nn.ReLU(),
            nn.Dropout(0.5),
            nn.Linear(256, num_classes),
        )
        model.fc = model_head

现在我想使用Ineception v3 model 作为基础,所以我从上面的resnet50()切换到inception_v3() ,rest 保持原样。 但是,在训练期间,我收到以下错误:

TypeError:cross_entropy_loss():参数“输入”(位置 1)必须是张量,而不是 InceptionOutputs

那么如何使用来自torchvision.modelsInception v3 model 作为基础 model 进行迁移学习?

来自关于 Inceptionv3 架构的 PyTorch 文档:

这个网络是独一无二的,因为它在训练时有两个 output 层。 初级 output 是网络末端的线性层。 第二个 output 称为辅助 output,包含在网络的 AuxLogits 部分中。

看看这个教程: https://pytorch.org/tutorials/beginner/finetuning_torchvision_models_tutorial.html#inception-v3在那里你可以找到如何将迁移学习用于几个模型,包括 ResNet 和 Inception。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM