【问题标题】:How to use Deep Learning Models from Keras for a problem that does not fit imagenet dataset?如何使用 Keras 的深度学习模型解决不适合 imagenet 数据集的问题?
【发布时间】:2020-11-04 13:29:19
【问题描述】:

我关注了一篇关于如何从头开始实现 vgg16 模型的博客,并希望对来自 Keras 的预训练模型做同样的事情。我查阅了其他一些博客,但找不到我认为合适的解决方案。我的任务是将集成电路图像分类为缺陷或非缺陷。

我在一篇论文中看到他们使用 vgg16 的预训练 imagenet 模型进行织物缺陷检测,他们冻结了前七层并针对自己的问题微调了后九层。 (来源:https://journals.sagepub.com/doi/full/10.1177/1558925019897396

我已经看到了有关如何冻结除完全连接层之外的所有层的示例,但是我如何尝试冻结前 x 层并针对我的问题微调其他层的示例?

从头开始实现 VGG16 相当容易,但对于 resnet 或 xception 等模型来说,它变得有点棘手。

【问题讨论】:

    标签: python keras deep-learning transfer-learning vgg-net


    【解决方案1】:

    没有必要从头开始实现模型来冻结几层。您也可以在预训练模型上执行此操作。在 keras 中,你会使用 trainable = False

    例如,假设您想使用 keras 中预训练的 Xception 模型并想冻结前 x 层:

    #In your includes
    from keras.applications import Xception
    
    #Since you're using the model for a different task, you'd want to remove the top
    base_model = Xception(weights='imagenet', include_top=False)
    
    #Freeze layers 0 to x
    for layer in base_model.layers[0:x]:
        layer.trainable = False
    
    #To see all the layers in detail and to check trainable parameters
    base_model.summary()
    

    理想情况下,您希望在此模型之上添加另一层,并将输出作为您的类。更多详情可以查看这篇keras指南:https://keras.io/guides/transfer_learning/

    很多时候,预训练的权重在其他分类任务中可能非常有用,但如果您想在数据集上从头开始训练模型,则可以在没有 imagenet 权重的情况下加载模型。或者更好的是,加载权重但不要冻结任何层。这将重新训练每一层,将 imagenet 权重作为初始化。

    希望我已经回答了你的问题。

    【讨论】:

    • 感谢您的回答!我可以使用 ImageDataGenerator 中的 flow_from_directory 吗?我现在明白如何冻结,但完整的代码会是什么样子?我是否使用 ImageDataGenerator 的 flow_from_directory 加载图像,然后像您一样加载模型并且不冻结任何层,然后使用像 adam 这样的优化器并编译它?
    • 是的,这是一般流程。您可以使用 flow_from_directory 加载数据。加载预训练模型后,您可以冻结/解冻几个层,并在输出处添加一个全连接层/softmax。然后编译你的模型并使用 fit 函数来训练它
    • 我试过了,它工作了,但不知何故不像意图 ^^ 我得到了非常高的 val acc 和非常低的 val loss 但它错误地将所有测试图像分类为缺陷 O_O 我问了一个新问题这个,你有任何猜测可能是什么原因吗?我使用了密集层和softmax,但不知道我是否做错了stackoverflow.com/questions/63011042/…
    猜你喜欢
    • 2017-10-22
    • 2018-02-03
    • 2018-09-03
    • 1970-01-01
    • 2019-12-10
    • 2021-04-08
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    相关资源
    最近更新 更多