【发布时间】:2018-08-31 18:07:19
【问题描述】:
我正在为 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)
【问题讨论】:
-
这不适合stackoverflow。参数的数量也是一个困难的数量。它在某种程度上告诉您模型的复杂性。如果没有良好的正则化,如果你有很多参数,你更有可能过度拟合。此外,它通常会使训练变得非常困难。最好的方法是从简单/浅层开始,然后为您的模型增加复杂性。
-
尝试获取更多数据,例如使用数据增强。
-
我使用了图像增强,但没有改善结果
标签: python python-3.x deep-learning keras keras-layer