Conv2D和Conv3D:提高准确性

时间:2019-02-08 04:37:04

标签: tensorflow keras deep-learning caffe pytorch

我有10000个RGB图像,每个图像有5个类别的18 * 18像素(是的,图像尺寸很小)。我想建立深度学习模型,将图像分为5个标签。我分别使用内核(3,3)和(3,3,3)尝试了Conv2D和Conv3D。我尝试使用不同的过滤器(16、32、64、128、256)添加多层(最多8个)。我尝试了不同的激活器(relu,Sigmoid)和优化器(adam,sgd)。我还尝试了#个时期,最高达到500个。但是,无论如何我都无法获得超过0.5的总体准确度。请帮助我,我该如何提高准确性。

3 个答案:

答案 0 :(得分:1)

我建议您寻找“ mnist cnn”之类的好例子,并将该模型应用于您的数据集。

我认为您还需要其他东西,而不仅仅是网络体系结构。

可能在下面。

  • 数据增强:旋转,缩放,移位等
  • 初始化:参数初始化(权重,偏差)
  • 批处理规范
  • 退出
  • 时代缩短了学习速度

答案 1 :(得分:0)

首先尝试增加每个班级的数据样本(尝试ti收集真正的新数据,然后将它们全部扩增) 即使您的数据与imagenet类不​​一样,也要使用最先进的预训练模型(例如mobile net v2或Xceptoin)作为初始权重,并根据您的数据进行微调 如果您的样本类似于imagenet,则可以冻结第一层,而仅在模型末尾训练密集层。

答案 2 :(得分:0)

这是我的两分钱

  • 在模型架构方面,从简单开始,并在必要时增加容量(分层过滤器)。
  • 从我的经验来看,优化器的学习率影响最大。因此,首先保持所有其他参数固定不变,只是找到一个好的学习率是一个好的开始。
  • 使用Adam,它对不良学习率不那么敏感。
  • 一开始,实际上不需要在数据上使用花式增强,辍学或权重调整。这些方法用于帮助您的模型防止过度拟合。由于您的精度保持在0.5,因此您并不会过拟合。
  • 批处理规范化可以为CNN创造奇迹。
  • 如果您的数据不平衡,请尝试使用加权损失。

上面提到的一些要点(以及更多)摘自Andrej Karpathy的博客文章A recipe for training neural networks