提高 CNN 模型的准确性(停留在非常低的准确性)

Increase accuracy of CNN model (stuck at really low accuracy)

这是我的代码:用于图像识别的 CNN 训练

python

# definiton of code

def make_model():


    model = Sequential()
    model.add(Conv2D(16, (3,3),input_shape = (32,32,3), padding = "same", 
    kernel_initializer="glorot_uniform"))
    model.add(LeakyReLU(alpha=0.1))

    model.add(Conv2D(32, (3,3),input_shape = (32,32,3), padding = "same", 
    kernel_initializer="glorot_uniform"))
    model.add(LeakyReLU(alpha=0.1))
    model.add(MaxPooling2D(pool_size = (2,2),padding = "same"))
    model.add(Dropout(0.25))*

  

    model.add(Conv2D(32,(3,3), input_shape = (32,32,3), padding = "same"))
    
    model.add(LeakyReLU(alpha=0.1))

    model.add(Conv2D(64, (3,3),input_shape = (32,32,3), padding = "same"))
    model.add(LeakyReLU(alpha=0.1))

    model.add(MaxPooling2D(pool_size = (2,2),padding = "same"))
    model.add(Dropout(0.25))

    *layer*

    model.add(Flatten())
    model.add(Dense(256))

    *for activation*
    model.add(LeakyReLU(alpha=0.1))
    model.add(Dropout(0.5))
    
    model.add(Dense(10))

    *for activation*
    model.add(LeakyReLU(alpha=0.1))

    model.add(Activation("softmax"))

然后它一直停留在结果上,这让我很害怕:

loss: 7.4918; acc: 0.1226. 

我一直在尝试更多的方法,但我不知道我应该为正确的路径做些什么。

没有问题的详细信息,很难进行更多的调查。

但我鼓励您多看看 :

  • BatchNormalization
  • 损失函数
  • 学习率
  • 优化器
  • 隐藏层

当前最先进的技术是将卷积与批量归一化和 ReLU 激活一起应用。顺序应如下:

  1. 卷积
  2. 批量归一化
  3. ReLU(也可能是leaky ReLu或任何其他激活)

所以你应该在你的卷积之后添加 BN,然后你也应该删除 DropOut。许多研究人员研究过,如果使用 BN,则不需要 Dropout,而且 BN 的性能实际上更好。

除此之外,您可能应该尝试使用学习率、过滤器数量等参数。

还要确保您使用的是正确的损失和与损失相对应的输出激活。