我正在为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)
答案 0 :(得分:0)
大量参数容易过度拟合。如果您的训练准确率接近100%,而您的验证准确度仅为50%,则情况就是如此。如果是这种情况,您可能需要查看转移学习(https://towardsdatascience.com/transfer-learning-using-keras-d804b2e04ef8)。这是用于拟合较小数据集的技术之一。