首页 > 解决方案 > 如何在 Flux.jl 中冻结图层参数

问题描述

我目前正在研究迁移学习问题,所以我想冻结我的大部分层,这样模型就不会重新训练,并且只修改最后一层的权重。如何选择使用 Flux.jl 冻结哪些层?

标签: juliaflux.jl

解决方案


Flux 提供了一个简单的接口来执行此操作,即只将要修改的层传递给Flux.params()函数,如下所示:

m = Chain(
      Dense(784, 64, relu),
      Dense(64, 64, relu),
      Dense(32, 10)
    )

ps = Flux.params(m[3:end])

在上面的示例中,我们选择仅更新最后Dense一层(这通常是您在迁移学习示例中所做的)。

您可以在有关迁移学习的 Flux.jl 教程中看到一个完整的示例:https ://fluxml.ai/tutorials/2020/10/18/transfer-learning.html


推荐阅读