当前位置: 首页 > news >正文

商城网站建设所必备的四大功能是哪些/哪有网页设计公司

商城网站建设所必备的四大功能是哪些,哪有网页设计公司,wordpress访问很慢吗?,做智能网站软件下载在这篇文章中,我们将简要介绍一下迁移学习是什么,以及如何使用它。什么是迁移学习?迁移学习是使用预训练模型解决深度学习问题的艺术。迁移学习是一种机器学习技术,你可以使用一个预训练好的神经网络来解决一个问题,这…

在这篇文章中,我们将简要介绍一下迁移学习是什么,以及如何使用它。

什么是迁移学习?

迁移学习是使用预训练模型解决深度学习问题的艺术。

迁移学习是一种机器学习技术,你可以使用一个预训练好的神经网络来解决一个问题,这个问题类似于网络最初训练用来解决的问题。例如,您可以利用构建好的用于识别狗的品种的深度学习模型来对狗和猫进行分类,而不是构建您自己的模型。这可以为您省去寻找有效的神经网络体系结构的痛苦,可以为你节省花在训练上的时间,并可以保证有良好的结果。也就是说,你可以花很长时间来制作一个50层的CNN来完美地区分你的猫和狗,或者你可以简单地使用许多预训练好的图像分类模型。

使用预训练模型的三种不同方式

主要有三种不同的方式可以重新定位预训练模型。他们是,

  1. 特征提取 。
  2. 复制预训练的网络的体系结构。
  3. 冻结一些层并训练其他层。

特征提取:这里我们所需要做的就是改变输出层,以给出cat和dog的概率(或者您的模型试图将内容分类到的类的数量),而不是最初训练它将内容分类到的数千个类。当我们试图训练模型所使用的数据与预训练的模型最初所训练的数据非常相似且数据集的大小很小时,这是理想的。这种机制称为固定特征提取。我们只对添加的新输出层进行重新训练,并保留每一层的权重。

复制预训练网络的架构 :在这里,我们定义了一个与预训练模型具有相同体系结构的机器学习模型,该模型在执行与我们试图实现的任务类似的任务时显示了出色的结果,并从头开始训练它。我们从预训练的模型中丢弃每一层的权重,然后根据我们的数据重新训练整个模型。当我们有大量的数据要训练时,我们会采用这种方法,但它与训练前的模型所训练的数据并不十分相似。

冻结一些层并训练其他层:我们可以选择冻结一个预训练模型的初始k层,只训练最顶层的n-k层。我们保持初始值的权重与预训练模型的权重相同且不变,并对数据的高层进行再训练。当数据集较小且数据相似度较低时,采用该方法。较低的层主要关注可以从数据中提取的最基本的信息,因此可以将其用于其他问题,因为基本级别的信息通常是相同的。

另一种常见情况是数据相似性高且数据集也很大。在这种情况下,我们保留模型的体系结构和模型的初始权重。然后,我们对整个模型进行再训练,以更新预训练模型的权重,以更好地适应我们的特定问题。这是使用迁移学习的理想情况。

下图显示了随着数据集大小和数据相似性的变化而采用的方法。

b76d1fe941183bd786e0d4e4f460cd58.png

PyTorch中的迁移学习

在torchvision.models模块下,PyTorch中有八种不同的预训练模型。他们是 :

  1. AlexNet
  2. VGG
  3. RESNET
  4. SqueezeNet
  5. DenseNet
  6. Inception v3
  7. GoogLeNet
  8. ShuffleNet v2

这些都是为图像分类而构建的卷积神经网络,在ImageNet数据集上进行训练。ImageNet是根据WordNet层次结构组织的图像数据库,包含14,197,122张属于21841类的图像。

1e6560583df575394020ed32382b4e34.png

由于PyTorch中的所有预训练模型都针对相同的任务在相同的数据集上进行训练,所以我们选择哪一个并不重要。让我们选择ResNet网络,看看如何在前面讨论的不同场景中使用它。

用于图像识别的ResNet或深度残差学习在pytorch、ResNet -18、ResNet -34、ResNet -50、ResNet -101和ResNet -152上有五个版本。

让我们从torchvision下载ResNet-18。

import torchvision.models as modelsmodel = models.resnet18(pretrained=True)
b12534370584cd38b0d0794c384909d4.png

以下是我们刚刚下载的模型。

b02d91c030fcf251c0b97fbca37fd964.png
aa60a5888a8ee8ca1da127f6e1d6d6c8.png

现在,让我们看看尝试,看看如何针对四个不同的问题训​​练这个模型。

数据集很小,数据相似性很高

考虑这个kaggle数据集(https://www.kaggle.com/mriganksingh/cat-images-dataset)。这包括猫的图像和其他非猫的图像。它有209个像素64*64*3的训练图像和50个测试图像。这显然是一个非常小的数据集,但我们知道ResNet是在大量动物和猫图像上训练的,所以我们可以使用ResNet作为固定特征提取器来解决我们的猫与非猫的问题。

num_ftrs = model.fc.in_featuresnum_ftrs
6a63861a2a409cfe6173895af70577e1.png

Out: 512

model.fc.out_features

Out: 1000

我们需要冻结除最后一层之外的所有网络。我们需要设置requires_grad = False来冻结参数,这样就不会在backward()中计算梯度。新构造模块的参数默认为requires_grad=True。

for param in model.parameters(): param.requires_grad = False
053e2f1170f429efaba2569359fbc9d1.png

由于我们只需要最后一层提供两个概率,即图像的概率是否为cat,我们可以重新定义最后一层中的输出特征数。

model.fc = nn.Linear(num_ftrs, 2)

这是我们模型的新架构。

01c2844d00048a6b39943bc3a5e4d7ca.png
8aa2addcc81c0c6dc419c4e0cb190bbb.png

我们现在要做的就是训练模型的最后一层,我们将能够使用我们重新定位的vgg16来预测图像是否是猫,而且数据和训练时间都非常少。

数据的大小很小,数据相似性也很低

考虑来自(https://www.kaggle.com/kvinicki/canine-coccidiosis),这个数据集包含了犬异孢球虫和犬异孢球虫卵囊的图像和标签,异孢球虫卵囊是一种球虫寄生虫,可感染狗的肠道。它是由萨格勒布兽医学院创建的。它包含了两种寄生虫的341张图片。

04d53f19bf53e26ea5502157568300f5.png

这个数据集很小,而且不是Imagenet中的一个类别。在这种情况下,我们保留预先训练好的模型架构,冻结较低的层并保留它们的权重,并训练较低的层更新它们的权重以适应我们的问题。

count = 0for child in model.children(): count+=1print(count)
4d8aa100c27ae1ae5b668576934ed49d.png

Out: 10

ResNet18共有10层。让我们冻结前6层。

count = 0for child in model.children(): count+=1 if count < 7: for param in child.parameters(): param.requires_grad = False
6badc6195336fe6b95841f9c88bd65f6.png

现在我们已经冻结了前6层,让我们重新定义最终输出层,只给出2个输出,而不是1000。

model.fc = nn.Linear(num_ftrs, 2)

这是更新的架构。

b84525d15d8b8e75bc188ba91322da97.png
20988bd552b3a0cbc5ecb6306798f586.png

现在,训练这个机器学习模型,更新最后4层的权重。

数据集的大小很大,但数据相似性非常低

考虑这个来自kaggle,皮肤癌MNIST的数据集:HAM10000

其具有超过10015个皮肤镜图像,属于7种不同类别。这不是我们在Imagenet中可以找到的那种数据。

这就是我们只保留模型架构而不保留来自预训练模型的任何权重的地方。让我们重新定义输出层,将项目分类为7个类别。

model.fc = nn.Linear(num_ftrs, 7)

这个模型需要几个小时才能在没有GPU的机器上进行训练,但是如果你运行足够的时代,你仍然会得到很好的结果,而不必定义你自己的模型架构。

数据大小很大,数据相似性很高

考虑来自kaggle 的鲜花数据集(https://www.kaggle.com/alxmamaev/flowers-recognition)。它包含4242个花卉图像。图片分为五类:洋甘菊,郁金香,玫瑰,向日葵,蒲公英。每个类大约有800张照片。

这是应用迁移学习的理想情况。我们保留了预训练模型的体系结构和每一层的权重,并训练模型更新权重以匹配我们的特定问题。

model.fc = nn.Linear(num_ftrs, 5)best_model_wts = copy.deepcopy(model.state_dict())
31247d92f14ad7d5e5428c502f3b4889.png

我们从预训练的模型中复制权重并初始化我们的模型。我们使用训练和测试阶段来更新这些权重。

for epoch in range(num_epochs):  print(‘Epoch {}/{}’.format(epoch, num_epochs — 1)) print(‘-’ * 10) for phase in [‘train’, ‘test’]:  if phase == 'train': scheduler.step() model.train()  else: model.eval() running_loss = 0.0 running_corrects = 0 for inputs, labels in dataloaders[phase]:  inputs = inputs.to(device) labels = labels.to(device) optimizer.zero_grad() with torch.set_grad_enabled(phase == ‘train’):  outputs = model(inputs) _, preds = torch.max(outputs, 1) loss = criterion(outputs, labels)  if phase == ‘train’: loss.backward() optimizer.step() running_loss += loss.item() * inputs.size(0) running_corrects += torch.sum(preds == labels.data)  epoch_loss = running_loss / dataset_sizes[phase] epoch_acc = running_corrects.double() / dataset_sizes[phase] print(‘{} Loss: {:.4f} Acc: {:.4f}’.format( phase, epoch_loss, epoch_acc))  if phase == ‘test’ and epoch_acc > best_acc: best_acc = epoch_acc best_model_wts = copy.deepcopy(model.state_dict())print(‘Best val Acc: {:4f}’.format(best_acc))model.load_state_dict(best_model_wts)
afa7d24d8cfb20c16642705cbf119d62.png

这种机器学习模式也需要几个小时的训练,但即使只有一个训练epoch ,也会产生出色的效果。

您可以按照相同的原则在任何其他平台上使用任何其他预训练的网络执行迁移学习。本文随机挑选了Resnet和pytorch。任何其他CNN都会给出类似的结果。希望这可以节省您使用计算机视觉解决现实世界问题的痛苦时间。

http://www.jmfq.cn/news/4905091.html

相关文章:

  • 优购物官方网站下载/网站流量分析报告
  • 做网站用的/网络推广和网站推广
  • 做网站怎么报价/百度最怕哪个部门去投诉
  • 网站开发与维护算什么职位/竞价托管是啥意思
  • 域名iis网站添加/百度站长平台提交网站
  • 给企业做宣传网站的好处/衡阳网站优化公司
  • 网站建设公司模版/优化网站软文
  • 网站开发培训哪个好/二十个优化
  • 宁波网站的优化/做百度网站一年多少钱
  • 中国电子工程师网/网站优化seo是什么
  • 优秀网站特点/seo资讯
  • 重庆网站设计制作网站/参考网是合法网站吗?
  • wordpress导航栏上方/太原搜索引擎优化招聘信息
  • 环保网站模板 html/网络推广的基本方法有哪些
  • 重庆网站关键词排名/seo搜索引擎优化排名报价
  • 拿自己爱人做网站/外贸谷歌推广怎么样
  • 怎么制作页面边框/搜索引擎优化排名seo
  • 左中右三栏布局网站建设/苏州seo营销
  • 长沙网站建设公司哪家专业/重庆黄埔seo整站优化
  • 免费网站设计定制/windows10优化工具
  • 做调查挣钱的网站/东莞seo网络培训
  • 沭阳做网站shy1z/windows优化工具
  • 做优化的网站/网站快速排名推广软件
  • 建设公司网站的步骤/网络营销常见的工具
  • 百度怎么做自己的网站/品牌形象推广
  • 网站路径改版如何做301重定向/域名注册查询
  • 建立公司微信平台 网站平台/南京网站设计公司
  • 网站开发包括哪些/买域名
  • 深圳坂田做网站/百度推广后台登录页面
  • 做网站换域名/百度推广价格