如何直接修改 Julia 库 Flux 中的权重值?
How can I directly modify the weight values in the Julia library Flux?
在 Julia 库 Flux 中,我们可以采用神经网络,我们称之为网络 m
并使用以下代码提取网络 m
的权重:
params(m)
此 returns 一种 Zygote.Params
类型的对象,形式为:
Params([Float32[0.20391908 -0.101616435 0.09610984 -0.1013181 -0.13325627 -0.034813307 -0.13811183 0.27022845 ...]...)
如果我想稍微改变每个权重,我将如何访问它们?
编辑:
根据要求,这是 m
:
的结构
Chain(LSTM(8,10),Dense(10,1))
您可以迭代 Params
对象以访问作为数组的每组参数,您可以就地对其进行操作。
假设你想改变每个参数1‰,你可以这样做:
julia> using Flux
julia> m = Dense(10, 5, σ)
Dense(10, 5, σ)
julia> params(m)
Params([Float32[-0.026854342 -0.57200056 … 0.36827534 -0.39761665; -0.47952518 0.594778 … 0.32624483 0.29363066; … ; -0.22681071 -0.0059174187 … -0.59344876 -0.02679312;
-0.4910349 0.60780525 … 0.114975974 0.036513895], Float32[0.0, 0.0, 0.0, 0.0, 0.0]])
julia> for p in params(m)
p .*= 1.001
end
julia> params(m)
Params([Float32[-0.026881196 -0.5725726 … 0.3686436 -0.39801428; -0.4800047 0.5953728 … 0.32657108 0.2939243; … ; -0.22703752 -0.0059233364 … -0.5940422 -0.026819913; -0.
49152592 0.60841304 … 0.11509095 0.03655041], Float32[0.0, 0.0, 0.0, 0.0, 0.0]])
在 Julia 库 Flux 中,我们可以采用神经网络,我们称之为网络 m
并使用以下代码提取网络 m
的权重:
params(m)
此 returns 一种 Zygote.Params
类型的对象,形式为:
Params([Float32[0.20391908 -0.101616435 0.09610984 -0.1013181 -0.13325627 -0.034813307 -0.13811183 0.27022845 ...]...)
如果我想稍微改变每个权重,我将如何访问它们?
编辑:
根据要求,这是 m
:
Chain(LSTM(8,10),Dense(10,1))
您可以迭代 Params
对象以访问作为数组的每组参数,您可以就地对其进行操作。
假设你想改变每个参数1‰,你可以这样做:
julia> using Flux
julia> m = Dense(10, 5, σ)
Dense(10, 5, σ)
julia> params(m)
Params([Float32[-0.026854342 -0.57200056 … 0.36827534 -0.39761665; -0.47952518 0.594778 … 0.32624483 0.29363066; … ; -0.22681071 -0.0059174187 … -0.59344876 -0.02679312;
-0.4910349 0.60780525 … 0.114975974 0.036513895], Float32[0.0, 0.0, 0.0, 0.0, 0.0]])
julia> for p in params(m)
p .*= 1.001
end
julia> params(m)
Params([Float32[-0.026881196 -0.5725726 … 0.3686436 -0.39801428; -0.4800047 0.5953728 … 0.32657108 0.2939243; … ; -0.22703752 -0.0059233364 … -0.5940422 -0.026819913; -0.
49152592 0.60841304 … 0.11509095 0.03655041], Float32[0.0, 0.0, 0.0, 0.0, 0.0]])