ニューラルネットワーク構造をしている過程で、pytorch resnetは、多くの場合、特にresnet50に、バックボーンとして次のようなネットワーク構成を使用しました
import torch
import torch.nn as nn
from torchvision import datasets, transforms
from torchvision import models
class base_resnet(nn.Module):
def __init__(self):
super(base_resnet, self).__init__()
self.model = models.resnet50(pretrained=True)
#self.model.load_state_dict(torch.load('./model/resnet50-19c8e357.pth'))
self.model.avgpool = nn.AdaptiveAvgPool2d((1, 1))
def forward(self, x):
x = self.model.conv1(x)
x = self.model.bn1(x)
x = self.model.relu(x)
x = self.model.maxpool(x)
x = self.model.layer1(x)
x = self.model.layer2(x)
x = self.model.layer3(x)
x = self.model.layer4(x)
x = self.model.avgpool(x)
# x = x.view(x.size(0), x.size(1))
return x
ネットワーク構造の対応は、すべてのパラメータの継承をresnet50はなく、最終的な展開特性と線形分類した後、データ送信処理を変更する、前方にあります。このコード行で定義されたresnet50ネットワークpytochを呼び出すことに相当し、自動的に訓練されたネットワークパラメータをダウンロードし、ロードを以下では、pretrained = Falseに調整した場合、パラメータは、訓練を受けたロードされていませんが、無作為割り当てパラメータ。私は時にtrueに設定さを再ダウンロードするかどうresnet50訓練されたパラメータを、プログラムを再実行しますが、理由は時々ネットワークは特に悪い、見つけたとき、私は基礎をダウンロードする原因しかし、私は、サーバー上のこの種のコードを実行しました私は直接それをロードするために、時間のこのresnet50事前の良い使用のパラメータをダウンロードできるようにしたかったのでresnet50は、私に長い時間がかかるだろう。もちろん、それが有効になっています。
self.model = models.resnet50(pretrained=True)
私たちは、アドレスに続くローカル共通resnetに対応したアドレスに対応するモデルをダウンロードするには、私たちの構造を使用することができます。
'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth',
'resnet34': 'https://download.pytorch.org/models/resnet34-333f7ec4.pth',
'resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth',
'resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth',
'resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth',
それをダウンロードした後、下の同じディレクトリのフォルダにモデルとnet.pyモデルファイルに入れ、その後、次のコードを使用するには、再ダウンロードするたびに、モデルの問題を回避することができます。
self.model = models.resnet50(pretrained=False)
self.model.load_state_dict(torch.load('./model/resnet50-19c8e357.pth'))