【问题标题】:Cnn keras model what no of trained parameter represents and improve the modelCnn keras 模型训练参数代表什么并改进模型
【发布时间】:2018-08-31 18:07:19
【问题描述】:

我正在为 keras cnn 模型寻找一些有用的建议。 我有一个非常小的数据集(144 张图像),我正在通过 keras cnn 进行训练,我尝试添加许多 layersnum_of_filters,但准确度没有增加,偶数 trained parameter 为 111,453,342。大量的参数是否代表更多的机会获得良好的准确性?下面是我现有的模型,它给出了val_acc=0.56。如何改进我的模型。

inputs=Input(shape=(100,100,1))
x=Conv2D(28, (5, 5), padding='same')(inputs)
x=SReLU()(x)
x=MaxPooling2D(pool_size=(2,2), strides=(1, 1))(x)
x=Conv2D(14, (4, 4), padding='same')(x)
x=SReLU()(x)
x=MaxPooling2D(pool_size=(2,2), strides=(1, 1))(x)
x=Conv2D(7, (3, 3), padding='same')(x)
x=SReLU()(x)
x=MaxPooling2D(pool_size=(2,2))(x)
x=Flatten()(x)
x=Dropout(0.2)(x)
x=Dense(512)(x)
x=SReLU()(x)
#x=keras.layers.GlobalMaxPooling2D()(x)
x=Dropout(0.2)(x)
x=Dense(num_classes)(x)

output=Activation('softmax')(x)
model=Model([inputs], output)

【问题讨论】:

  • 这不适合stackoverflow。参数的数量也是一个困难的数量。它在某种程度上告诉您模型的复杂性。如果没有良好的正则化,如果你有很多参数,你更有可能过度拟合。此外,它通常会使训练变得非常困难。最好的方法是从简单/浅层开始,然后为您的模型增加复杂性。
  • 尝试获取更多数据,例如使用数据增强。
  • 我使用了图像增强,但没有改善结果

标签: python python-3.x deep-learning keras keras-layer


【解决方案1】:

大量参数容易过拟合。情况就是这样,如果你的训练准确率接近 100%,而你的验证准确率只有 50% 左右。如果是这种情况,您可能想看看迁移学习 (https://towardsdatascience.com/transfer-learning-using-keras-d804b2e04ef8)。这是用于拟合较小数据集的技术之一。

【讨论】:

  • 我的训练准确度在 0.777 左右,而验证准确度为 0.333 和 0.5632
  • 似乎很低。您应该能够使用您的模型学习此数据集,并轻松获得 100% 的训练结果。这似乎是代码中的一个错误。检查网络的输入数据和网络的代码。
  • 输入的迁移学习抛出错误必须有3个通道
  • 如果我发布我的整个代码,你能检查一下它为什么显示低准确率
猜你喜欢
  • 1970-01-01
  • 2020-08-03
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 2018-10-16
  • 1970-01-01
  • 2019-11-25
相关资源
最近更新 更多