Cnn keras模型没有经过训练的参数表示和改进模型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cnn keras模型没有经过训练的参数表示和改进模型相关的知识,希望对你有一定的参考价值。
我正在为keras cnn模型寻找一些有用的建议。我有一个非常小的数据集(144图像)我正在通过keras cnn
训练我试图添加许多layers
和num_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)
答案
大量参数容易过度拟合。如果您的训练准确率接近100%,而您的验证准确度仅为50%,则情况就是如此。如果是这种情况,您可能需要查看转移学习(https://towardsdatascience.com/transfer-learning-using-keras-d804b2e04ef8)。这是用于拟合较小数据集的技术之一。
以上是关于Cnn keras模型没有经过训练的参数表示和改进模型的主要内容,如果未能解决你的问题,请参考以下文章
如何通过预先训练的InceptionV3加速我的Keras CNN