【问题标题】:Built in Flux.jl method to fetch NaN's内置 Flux.jl 方法来获取 NaN
【发布时间】:2021-07-04 19:28:19
【问题描述】:

我经常遇到的一个常见问题是我的模型将包含具有 NaN 值的矩阵。有没有一种通用的 Flux 方法可以将我的矩阵传入并检测这些 NaN?我知道 Julia 有一个内置的 isnan() 函数,可以在某些情况下使用,但我不确定是否有特定于 Flux 的版本?

【问题讨论】:

    标签: julia flux.jl


    【解决方案1】:

    不,没有 Flux 特定的功能。在大多数情况下,使用any(isnan, A) 可能是您想要做的。一种与 Flux 相关的“增强”是在检测到 NaN 时使用训练循环回调来停止训练。

    # assumes (x, y) is your training data
    #  and loss(x, y, mode) will compute the loss of model on (x, y)
    cb = () -> isnan(loss(x, y, model)) && Flux.stop()
    
    # basic train loop
    # assuming opt is your optimizer
    Flux.train!((x, y) -> loss(x, y, model), params(model), [(x, y)], opt; cb = cb)
    

    上面的例子是基本思想,你可以扩展到检查不同的数组是否有 NaN。例如,你可以这样做

    cb = () -> any(params(m)) do p
        any(isnan, p)
    end && Flux.stop()
    

    检查任何参数是否为NaN。

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 2011-05-08
      • 2021-11-06
      • 2016-08-28
      • 1970-01-01
      相关资源
      最近更新 更多