首页 文章

第一个时代的验证和训练准确度很高[Keras]

提问于
浏览
1

我正在训练一个包含2个类和53k图像的图像分类器,并使用keras使用1.3k图像进行验证 . 这是神经网络的结构:

model = Sequential()
model.add(Flatten(input_shape=train_data.shape[1:]))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
              loss='binary_crossentropy', metrics=['accuracy'])

在第一个时期,训练准确度从约50%增加到约85%,验证准确率为85% . 随后的时期一致地提高了训练准确度,但是,验证准确性保持在80-90%区域 .

我很好奇,是否有可能在第一个时代获得高验证和训练准确性?如果我的理解是正确的,那么它开始很小并且随着每个过去的时代而稳步增加 .

谢谢

编辑:重新缩放后图像大小为150x150,小批量大小为16 .

3 回答

  • 1

    是的,完全有可能在第一个时代获得高精度,然后只有适度的改进 .

    如果数据中有足够的冗余并且您在第一个时期(即使用小型小型机)进行了足够的更新(例如模型的复杂性,这似乎相当容易优化),那么您完全有可能学到大部分内容 . 第一个时代的重要事情 . 当您再次显示数据时,模型将开始过度拟合由您的火车组中的特定图像引入的粒度(因此您可以提高训练准确度),但由于您没有提供任何新颖的样本,因此它不会学到任何关于类的基础属性 .

    您可以将训练数据视为无限流(实际上SGD希望享受所有收敛定理) . 你认为你需要超过5万个样本来学习什么是重要的吗?实际上,您可以通过在一些子历元更新后提供更少的数据或报告性能来测试模型的数据饥饿程度 .

  • 1

    是的,时代应该适合模型上的数据 .

    尝试在最后使用2个神经元,在你的Class标签上使用一个热编码!就像我看过一个案例,我做了更好的结果,而不是二进制输出 .

  • 1

    使用前馈神经网络进行图像分类时,您不能指望精度超过90-95% .

    您需要使用另一种称为卷积神经网络的架构,这是图像识别领域的最新技术 .

    使用keras构建它也很容易,但计算上比这更密集 .

    如果你想坚持使用前馈层,你可以做的最好的事情就是提早停止,但即使这样也不会让你的准确率超过90% .

相关问题