keras学习记录——resnet为什么用averagepooling?

keras学习记录——resnet为什么用averagepooling?


目录

keras学习记录——resnet为什么用averagepooling?

前言

一、池化层

二、为什么在resnet后加均值池化而不是最大池化?

三、实际测试

总结


前言

本篇主要讨论resnet最后的pooling层为什么用averagepooling,而不是maxpooling?

主要用实验来回答这个问题,另外讲解了averagepooling和maxpooling的优缺点,并做了一些猜测(科研需要猜测,哈哈)


 

一、池化层

主要分为两种:averagepooling和maxpooling。

最大池化提取边缘等“最重要”的特征,而平均池化提取的特征更加smoothly。对于图像数据,你可以看到差异。虽然两者都是出于同样的原因使用,但我认为max pooling更适合提取极端功能。平均池有时不能提取好的特征,因为它将全部计入并计算出平均值,这对于对象检测类型任务可能不好用。引自:最大池化和均值池化的优缺点

二、为什么在resnet后加均值池化而不是最大池化?

猜测1:提取全局信息时适用于averagepooling,如分类;而提取局部信息时适用maxpooling,如roi pooling。

猜测2:在pooling层后面直接接上全连接层,全连接层在训练时是比较容易过拟合的,而averagepooling可以起到正则化的作用,正好可以防止过拟合。

猜测3:resnet不是采用传统的连通层进行CNN分类,而是设置了一些特别的通路将特征相加起来,因此看起来平均或许能更好的提取所需特征。

三、实际测试

本博客使用本人之前的博客中提到的网络,若有兴趣请转keras学习记录——训练resnet模型对cifar10分类,分别以averagepooling和maxpooling做训练,得出实验数据。

图中0_acc和0_vla_acc分别为averagepooling对应的训练集和验证集的准确率,case0_acc和case0_vla_acc分别为maxpooling对应的训练集和验证集的准确率。由图可知,在resnet中averagepooling相较于maxpooling,效果要好。

图片1


总结

学习了pooling相关的知识,记录下来,发现印象加深了好多,果然好记性不如好博客呀。

另外以后有机会测一下全局均值池化,可能效果比这两个更好。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Keras是一种用于构建神经网络的深度学习框架。keras.applications.resnet50是Keras预训练的ResNet50模型。ResNet50是一个深度卷积神经网络,用于图像分类任务。 要使用keras.applications.resnet50,您需要安装Keras并导入它。然后,您可以使用以下代码创建ResNet50模型: ``` from keras.applications.resnet50 import ResNet50 model = ResNet50(weights='imagenet') ``` 在这里,weights参数指定使用预训练的权重,这些权重在ImageNet数据集上进行了训练。您还可以通过设置include_top参数为False来创建不包含顶部(全连接层)的模型。这在使用迁移学习时非常有用,因为您可以将自己的顶部模型添加到预训练模型。 例如,以下代码将创建一个ResNet50模型,该模型不包含顶部,并且可以用于特征提取: ``` from keras.applications.resnet50 import ResNet50 from keras.layers import Input input_tensor = Input(shape=(224, 224, 3)) base_model = ResNet50(weights='imagenet', include_top=False, input_tensor=input_tensor) ``` 在这里,我们使用了Keras的Input层来指定输入张量的形状,这与ResNet50模型期望的形状相同。然后我们通过设置include_top为False来创建模型,这将删除顶部的全连接层。最后,我们使用输入张量和模型权重创建模型的实例。 ### 回答2: keras.applications.resnet50是一个预训练的卷积神经网络模型,基于50层的残差网络(ResNet)架构,用于图像分类任务。ResNet的残差结构可以有效地缓解深度神经网络在训练过程出现的梯度消失问题,使得模型更加容易训练,同时提高了模型的准确率。 keras.applications.resnet50模型包含了ImageNet图像分类任务的权重参数,拥有1000个类别预测能力,可以直接在各种图像数据集上进行Fine-tuning训练以适应不同的应用场景。同时,该模型还可被用于特征提取,即在已有的特征向量上添加新的分类器(如SVM,KNN等)进行分类任务。 除了keras.applications.resnet50之外,Keras还提供了许多其他的预训练卷积神经网络模型,如VGG16、VGG19、InceptionV3等,这些模型都可以直接使用,并能在不同的图像相关任务上获得较好的表现,因此被广泛应用于图像分类、目标检测、图像分割、人脸识别等诸多领域。 ### 回答3: keras是一个开源的深度学习框架,它提供了一系列的应用程序接口(API),使得开发者可以使用它们来构建深层神经网络模型。其之一就是keras.applications.resnet50。 ResNet(残差网络)是2015年ILSVRC比赛的冠军网络,提出了残差学习的概念。它解决了过深的网络导致的梯度消失问题。ResNet通过引入“残差块”来拟合跨层所遇到的差异,这种方法在减少参数的同时,能够提高网络的拟合性,并且可以比较好地乘以传播梯度。 keras.applications.resnet50就是基于ResNet的50层网络进行预训练的模型。它预训练了在Imagenet数据集上的权重,使得我们能够使用这个经过训练的模型来进行特征提取或者对未知图像进行分类。 使用keras.applications.resnet50模型,我们可以很方便地进行图像分类或者特征提取。只需要将图片输入模型,输出就是一个1000维的向量,对应1000个Imagenet数据集的类别。如果我们只需要提取特征而不需要分类,我们可以将模型的最后一层拆下来(也就是去掉最后的全连接层),输出的向量大小变为2048维,我们可以用这些特征向量来进行简单的聚类等操作。 总之,keras.applications.resnet50是一个非常强大的深度学习模型,提供了预训练权重,并且可以用于图像分类和特征提取,是许多人在图像任务的不二选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值