我的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, kernel_size=(3, 3), activation='relu', 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,activation='relu',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射线图像进行分类。
答案 0 :(得分:2)
您的模型过拟合。通常,当您的数据集采样不充分或模型对于数据集过于复杂时,就会发生这种情况。正确采样数据集并训练模型不超过20个纪元。另外,我们可以将您的图片标准化为x / 255.0,并省略BatchNormalization图层。
答案 1 :(得分:0)
您的验证集似乎采样不正确。尝试先对数据集进行改组,然后将其拆分为训练,验证和测试集。
答案 2 :(得分:0)
高培训准确性与低验证准确性一起表明您过度拟合了培训数据。我建议使用Residual Network,这是非平凡的图像处理深度学习任务的标准。