【问题标题】:how to prevent overfitting/underfitting while using EfficientNet如何在使用 EfficientNet 时防止过拟合/欠拟合
【发布时间】:2021-10-17 03:34:33
【问题描述】:

我是 python 新手 所以对于我的大学期末项目,我使用 EfficientNet 将成熟度棕榈油分为 4 类。 我总共有 5852 个训练数据(每个 1463 个)和 132 个测试数据(每个 33 个)。 我使用了来自互联网的代码。 但结果远非好。 我已经添加了 layers.dropout 以防止/避免欠拟合。 我还使用 imagenet 进行迁移学习。 有什么办法可以改善结果吗?

编辑: 我已经将我的代码从 conv_base.trainable = False 更改为 conv_base.trainable = True。但我觉得结果还是不好

这是我的完整代码:https://drive.google.com/file/d/1OeiSA23xmF5ceq19aqc1l20mlT3Uxocs/view?usp=sharing

这是我的结果

【问题讨论】:

  • 您的代码对我来说看起来不错。我认为你只需要做更多的实验。目前,我建议您尝试过度拟合您的训练数据,然后进行正则化。此外,还要训练conv_base
  • 先生有什么线索吗?
  • 将此行 conv_base.trainable = False 更改为 conv_base.trainable = True。此外,dropout 可以防止过拟合而不是欠拟合。
  • 我会试试的。但是,你能帮我看看哪些代码可以丢弃防止过拟合而不是欠拟合吗?
  • 我尝试训练我的模型。但是出现了另一个模型,它说“这可能是因为cuDNN初始化失败,所以试着看看上面是否打印了警告日志消息。”我已经在下面添加了代码来限制内存增长。但是还是出现了同样的错误。有什么线索可以解决这个问题吗? physical_devices = tf.config.experimental.list_physical_devices('GPU') tf.config.experimental.set_memory_growth(physical_devices[0], True)

标签: python deep-learning conv-neural-network overfitting-underfitting efficientnet


【解决方案1】:

在我看来,用于训练 Efficientnet 的 5852 个样本远远不够。您也没有足够的数据进行验证。我在超过一百万个样本上训练 Efficientnet,但它仍然倾向于过度拟合。我给你的建议是尝试一个更简单的 CNN 架构(你可以从简单的 LeNet 开始并尝试添加层)。如果您更喜欢迁移学习方法,请尝试使用 BiT 模型 (https://ai.googleblog.com/2020/05/open-sourcing-bit-exploring-large-scale.html),它会给您带来更好的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2013-12-19
    • 2019-02-08
    • 2019-02-10
    • 1970-01-01
    • 2020-01-11
    相关资源
    最近更新 更多