julia - 在 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)
解决方案
正如您所注意到的,该Dense
结构被定义为immutable。但是,您仍然可以使用 修改参数d.W .= a
。
推荐阅读
- filter - 如何使用grep在linux中过滤和复制带有空格的文件
- javascript - innerHTML - 在(点击)事件上传递值
- amazon-web-services - 使用 AWS CLI 时如何在 JMESPath 查询中为空值设置默认值?
- c# - .Net Core - SOAP - xsd.exe - cannot generate classes because no top-level elements with complex type were found
- php - "The page is not redirecting properly" firefox xampp php page failed to load
- mysql - 如何有效地使用窗口函数根据 N 个先前值来决定接下来的 N 个行
- javascript - 塔斯克解析json
- ramda.js - 如何根据 R.nthArg 重写它
- php - 在 php 或 Cakephp 3 中使用变量作为类名
- javascript - 由于没有从 express-serve-static-core 导出 ParsedQ,构建失败