加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 移动 > 正文

如何为您的机器学习问题选择正确的预训练模型

发布时间:2019-05-10 06:46:50 所属栏目:移动 来源:不靠谱的猫
导读:副标题#e# 在这篇文章中,我们将简要介绍一下迁移学习是什么,以及如何使用它。 什么是迁移学习? 迁移学习是使用预训练模型解决深度学习问题的艺术。 迁移学习是一种机器学习技术,你可以使用一个预训练好的神经网络来解决一个问题,这个问题类似于网络最

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

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

这是我们模型的新架构。

迁移学习:如何为您的机器学习问题选择正确的预训练模型 迁移学习:如何为您的机器学习问题选择正确的预训练模型

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

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

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

迁移学习:如何为您的机器学习问题选择正确的预训练模型

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

  1. count = 0 
  2. for child in model.children(): 
  3.  count+=1 
  4. print(count) 
迁移学习:如何为您的机器学习问题选择正确的预训练模型

Out: 10

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

  1. count = 0 
  2. for child in model.children(): 
  3.  count+=1 
  4.  if count < 7: 
  5.  for param in child.parameters(): 
  6.  param.requires_grad = False 
迁移学习:如何为您的机器学习问题选择正确的预训练模型

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

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

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读