arrays - 如何直接修改Julia库Flux中的权重值?

标签 arrays object neural-network julia flux.jl

在 Julia 库 Flux 中,我们能够采用神经网络,我们将其称为网络 m 并使用以下代码提取网络 m 的权重:

params(m)

这将返回一个 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]])                                                                                         

关于arrays - 如何直接修改Julia库Flux中的权重值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59865921/

相关文章:

python - Numpy:需要最有效的方法来处理 1D ndarray 中的选择元素,使用 2D ndarray 的映射,以输出 1D 平均 ndarray

c++ - 如何访问二维数组中的单个元素 C++

c# - 如何将在 TextBox 控件中输入的 long 拆分为 int 数组

image-processing - 使用神经网络搜索其他图像中的图案/图像

c++ - 对象继承类时如何判断对象是哪个类类型

python - 将列表中的所有对象转换为子类。

reactjs - TypeError : Object(. ..) 在 React 版本 16.13.1 中不是 "useCallBack"的函数

jquery - 如何通过 javascript 中的 url 将对象作为单个变量传递

python - Keras LSTM 形状不包含序列长度

machine-learning - 输入为 0 的神经网络