【问题标题】:Pytorch load modelPytorch 负载模型
【发布时间】:2017-09-18 15:37:13
【问题描述】:
我几天前使用了 tensorflow。构建具有固定权重的卷积层很容易,只需将权重内核传递给conv2d()。并且方便加载VGG19等预训练模型。但我发现使用 pytorch 并不能以这种方式工作,因为 conv2d() 不接受显式内核,而是接受内核大小。所以我想知道是否有可能我们可以通过简单地将VGG19 中的权重传递给像conv2d() 这样的方法来重用它。任何回复将不胜感激。
【问题讨论】:
标签:
conv-neural-network
pytorch
【解决方案1】:
我可以看到您有 2 个问题。如何在 pyTorch 中使用 VGG 等预训练模型,以及如何为 nn.conv2d() 等特定层设置权重。
要创建预训练的 Vgg 模型,您可以使用以下代码。
from torchvision import models
model_vgg = models.vgg16(pretrained=True)
for param in model_vgg.parameters():
param.requires_grad = False
在 PyTorch 中,您可以实现神经网络子类化 nn.Module,其中包含参数()函数,该函数返回与网络相关的所有权重。
设置特定层的权重。
decoder = nn.Linear(10, 100)
decoder.weight = #Do anything which is valid.
您可以查看我的代码here 以了解有关如何使用经过训练的模型的更多信息。