iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Pytorch卷积神经网络迁移的目标及好处是什么
  • 877
分享到

Pytorch卷积神经网络迁移的目标及好处是什么

2023-06-30 13:06:50 877人浏览 安东尼
摘要

本文小编为大家详细介绍“PyTorch卷积神经网络迁移的目标及好处是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Pytorch卷积神经网络迁移的目标及好处是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧

本文小编为大家详细介绍“PyTorch卷积神经网络迁移的目标及好处是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Pytorch卷积神经网络迁移的目标及好处是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、经典的卷积神经网络

在pytorch官网中,我们可以看到许多经典的卷积神经网络。

Pytorch卷积神经网络迁移的目标及好处是什么

这里简单介绍一下经典的卷积神经发展历程

首先可以说是卷积神经网络的开山之作Alexnet(12年的夺冠之作)这里简单说一下缺点 卷积核大,步长大,没有填充层,大刀阔斧的提取特征,容易忽略一些重要的特征

第二个就是VGG网络,它的卷积核大小是3*3,有一个优点是经过池化层之后,通道数翻倍,可以更多的保留一些特征,这是VGG的一个特点

Pytorch卷积神经网络迁移的目标及好处是什么

在接下来的一段时间中,出现了一个问题,我们都知道,深度学习随着训练次数的不断增加,效果应该是越来越好,但是这里出现了一个问题,研究发现随着VGG网络的不断提高,效果却没有原来的好,这时候人们就认为,深度学习是不是只能发展到这里了,这时遇到了一个瓶颈。

接下来随着残差网络(Resnet)的提出,解决了上面这个问题,这个网络的优点是保留了原有的特征,假如经过卷积之后提取的特征还没有原图的好,这时候保留原有的特征,就会解决这一问题,下面就是resnet网络模型

Pytorch卷积神经网络迁移的目标及好处是什么

Pytorch卷积神经网络迁移的目标及好处是什么

这是一些训练对比:

Pytorch卷积神经网络迁移的目标及好处是什么

二、迁移学习的目标

首先我们使用迁移学习的目标就是用人家训练好的权重参数,偏置参数,来训练我们的模型。

三、好处

深度学习要训练的数据量是很大的,当我们数据量少时,我们训练的权重参数就不会那么的好,所以这时候我们就可以使用别人训练好的权重参数,偏置参数来使用,会使我们的模型准确率得到提高

四、步骤

迁移学习大致可以分为三步

加载模型

冻结层数

全连接层

五、代码

这里使用的是resnet152

import torchimport torchvision as tvimport torch.nn as nnimport torchvisionimport torch.nn.functional as Fimport torchvision.transfORMs as transformsimport torchfrom torch.utils import datafrom torch import optimfrom torch.autograd import Variablemodel_name='resnet'featuer_extract=Truetrain_on_gpu=torch.cuda.is_available()if not train_on_gpu:    print("没有gpu")else :    print("是gpu")devic=torch.device("cuda:0" if torch.cuda.is_available() else 'cpu')teature_extract=Truedef set_paremeter_requires_grad(model,featuer_extract):    if featuer_extract:        for parm in model.parameters():            parm.requires_grad=False   #不做训练def initialize_model(model_name,num_classes,featuer_extract,use_pretrained=True):    model_ft = None    input_size = 0    if model_name=="resnet":        model_ft=tv.models.resnet152(pretrained=use_pretrained)#下载模型        set_paremeter_requires_grad(model_ft,featuer_extract) #冻结层数        num_ftrs=model_ft.fc.in_features #改动全连接层        model_ft.fc=nn.Sequential(nn.Linear(num_ftrs,num_classes),                                  nn.LogSoftmax(dim=1))        input_size=224 #输入维度    return  model_ft,input_sizemodel_ft,iput_size=initialize_model(model_name,10,featuer_extract,use_pretrained=True)model_ft=model_ft.to(devic)params_to_updata=model_ft.parameters()if featuer_extract:    params_to_updata=[]    for name,param in model_ft.named_parameters():        if param.requires_grad==True:            params_to_updata.append(param)            print("\t",name)else:    for name,param in model_ft.parameters():        if param.requires_grad==True:            print("\t",name)opt=optim.Adam(params_to_updata,lr=0.01)loss=nn.NLLLoss()if __name__ == '__main__':    transform = transforms.Compose([        # 图像增强        transforms.Resize(1024),#裁剪        transforms.RandomHorizontalFlip(),#随机水平翻转        transforms.RandomCrop(224),#随机裁剪        transforms.ColorJitter(brightness=0.5, contrast=0.5, hue=0.5), #亮度        # 转变为tensor 正则化        transforms.ToTensor(), #转换格式        transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))  # 归一化处理    ])    trainset = tv.datasets.CIFAR10(        root=r'E:\桌面\资料\cv3\数据集\cifar-10-batches-py',        train=True,        download=True,        transform=transform    )    trainloader = data.DataLoader(        trainset,        batch_size=8,        drop_last=True,        shuffle=True,  # 乱序        num_workers=4,    )    testset = tv.datasets.CIFAR10(        root=r'E:\桌面\资料\cv3\数据集\cifar-10-batches-py',        train=False,        download=True,        transform=transform    )    testloader = data.DataLoader(        testset,        batch_size=8,        drop_last=True,        shuffle=False,        num_workers=4    )    for epoch in range(3):        running_loss=0        for index,data in enumerate(trainloader,0):            inputs, labels = data            inputs = inputs.to(devic)            labels = labels.to(devic)            inputs, labels = Variable(inputs), Variable(labels)            opt.zero_grad()            h=model_ft(inputs)            loss1=loss(h,labels)            loss1.backward()            opt.step()            h+=loss1.item()            if index%10==9:                avg_loss=loss1/10.                running_loss=0                print('avg_loss',avg_loss)            if index%100==99 :                correct=0                total=0                for data in testloader:                    images,labels=data                    outputs=model_ft(Variable(images.cuda()))                    _,predicted=torch.max(outputs.cpu(),1)                    total+=labels.size(0)                    bool_tensor=(predicted==labels)                    correct+=bool_tensor.sum()                print('1000张测试集中的准确率为%d   %%'%(100*correct/total))

读到这里,这篇“Pytorch卷积神经网络迁移的目标及好处是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Pytorch卷积神经网络迁移的目标及好处是什么

本文链接: https://www.lsjlt.com/news/329273.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pytorch卷积神经网络迁移的目标及好处是什么
    本文小编为大家详细介绍“Pytorch卷积神经网络迁移的目标及好处是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Pytorch卷积神经网络迁移的目标及好处是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-30
  • Pytorch卷积神经网络迁移学习的目标及好处
    目录前言一、经典的卷积神经网络二、迁移学习的目标三、好处四、步骤五、代码前言 在深度学习训练的过程中,随着网络层数的提升,我们训练的次数,参数都会提高,训练时间相应就会增加,我们今天...
    99+
    2024-04-02
  • PyTorch中的卷积神经网络怎么实现
    在PyTorch中,可以使用torch.nn模块中的Conv2d类来实现卷积神经网络。以下是一个简单的示例,展示如何在PyTorch...
    99+
    2024-03-05
    PyTorch
  • pytorch搭建卷积神经网络要注意什么
    搭建卷积神经网络时,需要注意以下几点: 确保输入数据的维度和通道数与网络的输入层匹配。 确保卷积核的大小、步长和填充大小设置合理。...
    99+
    2024-04-08
    pytorch
  • pytorch卷积神经网络搭建要注意什么
    在搭建PyTorch卷积神经网络时,需要注意以下几点: 输入数据的维度和通道数必须与网络模型中的输入层匹配。 确保卷积核的大小、步...
    99+
    2024-04-02
  • PyTorch的神经网络模块是什么
    PyTorch的神经网络模块是torch.nn,它提供了用于构建神经网络的模块和函数。这个模块包含了各种神经网络层(如全连接层,卷积...
    99+
    2024-04-02
  • python机器学习GCN图卷积神经网络的原理是什么
    这篇文章主要介绍“python机器学习GCN图卷积神经网络的原理是什么”,在日常操作中,相信很多人在python机器学习GCN图卷积神经网络的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”pytho...
    99+
    2023-06-30
  • TensorFlow卷积神经网络MNIST数据集实现方法是什么
    本篇内容主要讲解“TensorFlow卷积神经网络MNIST数据集实现方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“TensorFlow卷积神经网络MNIST数据集实现方法是什么”吧!...
    99+
    2023-06-25
  • 关于div+css及Web标准网页的好处 说是什么
    这篇文章给大家介绍关于div+css及Web标准网页的好处 说是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。div元素是用来为html文档内大块(block-level)的内容提供结构和背景的元素。div的起始标...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作