如何解决为什么我的模型训练减少而验证不减少,训练精度增加而验证准确性不增加?
我使用约4600张按70:30比例分割的训练X射线图像。我以为我有一个很好的训练样本集,但是模型出乎意料的错误。下面是描绘模型性能图的图形。我的CCN如下所示:
INPUT_SHAPE = (224,224,3)
inp = tensorflow.keras.layers.Input(shape=INPUT_SHAPE)
conv1 = tensorflow.keras.layers.Conv2D(16,kernel_size=(3,3),activation='relu',padding='same')(inp)
pool1 = tensorflow.keras.layers.MaxPooling2D(pool_size=(2,2))(conv1)
norm1 = tensorflow.keras.layers.BatchNormalization()(pool1)
drop1 = tensorflow.keras.layers.Dropout(rate=0.3)(norm1)
conv2 = tensorflow.keras.layers.Conv2D(32,padding='same')(drop1)
pool2 = tensorflow.keras.layers.MaxPooling2D(pool_size=(2,2))(conv2)
norm2 = tensorflow.keras.layers.BatchNormalization()(pool2)
drop2 = tensorflow.keras.layers.Dropout(rate=0.3)(norm2)
flat = tensorflow.keras.layers.Flatten()(drop2)
#平整矩阵以使其准备好密集。
hidden1 = tensorflow.keras.layers.Dense(32,kernel_regularizer=regularizers.l2(0.03))
norm4 = tensorflow.keras.layers.BatchNormalization()(hidden1)
drop4 = tensorflow.keras.layers.Dropout(rate=0.5)(norm4)
out = tensorflow.keras.layers.Dense(2,activation='softmax')(drop4)
#units = 1出错
model_1 = tensorflow.keras.Model(inputs=inp,outputs=out)
model_1.summary()
如果我在这里缺少任何东西,请提供帮助。我正在对X射线图像进行分类。
解决方法
您的模型过拟合。通常,当您的数据集采样不充分或模型对于数据集过于复杂时,就会发生这种情况。正确采样数据集并训练模型不超过20个纪元。另外,我们可以将您的图片标准化为x / 255.0,并省略BatchNormalization图层。
,您的验证集似乎采样不正确。尝试先对数据集进行改组,然后将其拆分为训练,验证和测试集。
,高培训准确性与低验证准确性一起表明您过度拟合了培训数据。我建议使用Residual Network,这是非平凡的图像处理深度学习任务的标准。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。