pytorch 中resnet如何快速加载官方提供的预训练模型

news/2024/7/2 15:40:09

在做神经网络的搭建过程,经常使用pytorch中的resnet作为backbone,特别是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的所有参数结构,只不过是在forward中,改变了数据的传输过程,没有经过最后的特征展开以及线性分类。在下面的这行代码中,是相当于调用了pytoch中定义的resnet50网络,并且会自动下载并且加载训练好的网络参数,如果调为 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同目录的model文件夹下面,然后使用下面的代码就可以避免每次都重新下载模型的问题了。

self.model = models.resnet50(pretrained=False)
self.model.load_state_dict(torch.load('./model/resnet50-19c8e357.pth'))

 


http://www.niftyadmin.cn/n/3657836.html

相关文章

建立你的.NET 3.0开发环境

假设您想着手开发NET 3.0的WPF、WCF或WorkFlow的程序,需要下载并安装哪些套件呢?你需要知道并下载的东西有下列几项:Step1:首先您必须安装.NET Framework 3.0,则可以下载其Redistributable PackageMicrosoft .NET Fram…

2019年重要会议顶会AAAI ICML ICLR IJCAI NIPS 重要文章汇总以及录用目录

AAAI2019 录用文章目录http://www.aaai.org/Library/AAAI/aaai19contents.php AAAI 2019 杰出论文奖 How to Combine Tree-Search Methods in Reinforcement Learning AAAI 2019 杰出论文奖荣誉提名 Solving Imperfect-Information Games via Discounted Regret Minimization…

0-1分布的交叉熵简化分析

对于通用的计算交叉熵的公式如下: 但是对于0-1分布的交叉熵计算公式则可以简化为如下: 刚开始的时候不理解为什么这么改动,以为蕴含着什么深层次的概念和技巧了,其实很简单,0-1分布就是二分类,可以将二分类…

VS 2005 SQL Server 2005 on Windows Vista

若您想安装VS 2005 & SQL Server 2005在Windows Vista操作系统上,该注意些什么事呢?问有任何问题,您可以先参考微软网站。Visual Studio on Windows Vistahttp://msdn2.microsoft.com/en-us/vstudio/aa948853.aspxMicrosoft SQL Server 2…

curse of dimensionality 维数灾难的两个表现

1.数据在高维空间中会变的稀疏 2.高维空间中向量之间的欧氏距离已经不具有判定距离远近的功能了。

以WPF绘图简单的圆形

WPF有非常优异的2D与3D绘图能力,研讨会上许多人看过我Demo的一些WPF动态作品集,在这Show一下WPF绘制三个圆形,并透明重迭语法如下:xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http…

PAC (Probably Approximately correct) 讲解文章英文版

https://jeremykun.com/2014/01/02/probably-approximately-correct-a-formal-theory-of-learning/

在Windows Vista安装.NET 2.0开发环境注意事项

首先目前Windows Vista & Office 2007都只有英文版,这对于需要中文环境的使用者而言是很不方便的,并且对于需要开发公司或项目内的中文应用系统的人,也是会有困扰。而祭司目前工作上用的是宏碁NB 法拉利4005,配备2GRAM100G硬盘…