【发布时间】:2021-08-28 10:53:21
【问题描述】:
我目前正在研究迁移学习问题,因此我想冻结我的大部分层,这样模型就不会重新训练,并且只修改最后一层的权重。如何选择使用 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
【讨论】: