为什么测试准确率略高于训练准确率?

Why is testing accuracy marginally higher then the training accuracy?

提问人:Muzammil 提问时间:11/25/2022 更新时间:11/25/2022 访问量:11

问:

我正在使用 CNN 运行一个 3 类分类问题,总共有大约 7200 张图像。我使用了 80:20 的分割,精度和损耗曲线与代码一起附上。

有人可以解释为什么验证准确性高于训练,同样训练损失高于验证损失。虽然差异很小(大约 1%),但我不确定它是否可接受,或者我需要改进模型。

这是我运行的模型 batch_size = 64

# define cnn model
def define_model():
    model = Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same', input_shape=(64, 64, 3)))
    model.add(BatchNormalization())
    model.add(MaxPooling2D((2, 2)))
    model.add(Dropout(0.2))
    model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
    model.add(BatchNormalization())
    model.add(MaxPooling2D((2, 2)))
    model.add(Dropout(0.3))
    model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
    model.add(BatchNormalization())
    model.add(MaxPooling2D((2, 2)))
    model.add(Dropout(0.4))
    model.add(Flatten())
    model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
    model.add(BatchNormalization())
    model.add(Dropout(0.5))
    model.add(Dense(3, activation='softmax'))
    # compile model
    opt = SGD(lr=0.001, momentum=0.9)
    model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])
    return model

Accuracy

Loss

我尝试了其他各种模型,但精度和损耗曲线似乎不太好。这个看起来不错,但我预计训练精度会高于验证精度

测试 conv-神经-网络 训练-数据 丢失-函数 浮动-准确性

评论


答: 暂无答案