提问人:Muzammil 提问时间:11/25/2022 更新时间:11/25/2022 访问量:11
为什么测试准确率略高于训练准确率?
Why is testing accuracy marginally higher then the training accuracy?
问:
我正在使用 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
我尝试了其他各种模型,但精度和损耗曲线似乎不太好。这个看起来不错,但我预计训练精度会高于验证精度
答: 暂无答案
评论