1

如何在 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)

4

2 回答 2

1

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

于 2021-03-29T02:49:59.407 回答
1

当 dW 是一个普通矩阵时,使用d.W .= a.

但是,当 dW 是跟踪矩阵时,您需要做d.W.data .= a

于 2021-03-30T21:50:08.940 回答