提高CNN模型的准确性(卡在极低的准确率上)

以下是我的代码,用于图像识别的CNN训练:

python

# 代码定义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))    *层*    model.add(Flatten())    model.add(Dense(256))    *用于激活*    model.add(LeakyReLU(alpha=0.1))    model.add(Dropout(0.5))        model.add(Dense(10))    *用于激活*    model.add(LeakyReLU(alpha=0.1))    model.add(Activation("softmax"))

然后结果一直停滞不前,这让我感到非常困惑:

loss: 7.4918; acc: 0.1226. 

我尝试了几种方法,但不知道正确的路径是什么。


回答:

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

  1. 卷积
  2. 批量归一化
  3. ReLU(也可以是Leaky ReLU或其他任何激活函数)

因此,您应该在卷积之后添加批量归一化,然后删除Dropout。许多研究人员已经研究表明,如果使用批量归一化,则不需要Dropout,而且批量归一化的效果实际上更好。

除此之外,您可能还需要调整一些参数,比如学习率、滤波器数量等。

另外,请确保您使用了正确的损失函数和与损失函数对应的输出激活函数。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注