如何在 Flux.jl 中冻结图层参数

How to freeze layer parameters in Flux.jl

我目前正在处理一个迁移学习问题,所以我想冻结我的大部分层,这样就不会重新训练模型,并且只修改最后一层的权重。我如何选择使用 Flux.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