首页 > 解决方案 > 在 Flux 中手动更新层参数

问题描述

如何在 Flux 中手动设置图层的权重?该层是不可变的结构,因此它们不能直接更新:

> a = rand(Float64, (2, 3))
> d = Dense(3, 2, relu)
> d.W = a
ERROR: setfield! immutable struct of type Dense cannot be changed

update!函数假定使用渐变。虽然我可能可以将渐变矩阵组合在一起使用update!(x, x̄),但这似乎不是一个很好的解决方案。

理想情况下,我想编写一些函数来获取现有权重,计算新权重,然后设置这些新权重,例如d.W = func(d.W; args)

标签: juliaflux.jl

解决方案


正如您所注意到的,该Dense结构被定义为immutable。但是,您仍然可以使用 修改参数d.W .= a


推荐阅读