【发布时间】:2023-02-26 07:10:30
【问题描述】:
我正在使用来自 kaggle (https://www.kaggle.com/datasets/paultimothymooney/chest-xray-pneumonia) 的数据集对 CNN 模型进行肺炎检测。我得到了 100% 的准确率,但我不确定是否有问题,因为我听说不太可能获得 100% 的准确率。
这是我的模型结构:
model = Sequential([
Conv2D(input_shape=(150, 150, 1), filters=32, kernel_size=(3,3), strides=(1,1), padding="same", activation="relu"),
BatchNormalization(),
MaxPool2D(pool_size=(2,2),strides=(2,2)),
Conv2D(filters=64, kernel_size=(3,3), strides=(1,1), padding="same", activation="relu"),
BatchNormalization(),
MaxPool2D(pool_size=(2,2),strides=(2,2)),
Conv2D(filters=128, kernel_size=(3,3), strides=(1,1), padding="same", activation="relu"),
BatchNormalization(),
MaxPool2D(pool_size=(2,2),strides=(2,2)),
Flatten(),
Dense(units=128,activation="relu"),
Dropout(0.3),
Dense(units=2, activation="softmax")
])
我使用 0.001 的学习率和分类交叉熵损失函数。我正在训练 12 个时期的模型,批量大小为 32。
这是我得到的用于训练和验证的模型性能: (https://i.stack.imgur.com/ryJK6.png)
如上图所示,训练损失值猛增,训练准确率稳定在 50% 左右。然而,当我使用 testig 数据评估我的模型时,我得到了 100% 的准确率,但损失值非常高。我尝试将学习率更改为 0.01 和 0.0001,但模型的准确率仍然为 100%。
然而,当我将损失函数更改为二元交叉熵并将最后一个密集层的激活函数更改为 sigmoid 时,我得到了 87.50% 的准确率。
我不确定为什么我的模型会以这种方式运行。
【问题讨论】:
标签: deep-learning computer-vision conv-neural-network tensorflow2.0