微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

内置 Flux.jl 方法来获取 NaN

如何解决内置 Flux.jl 方法来获取 NaN

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

解决方法

不,没有特定于 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,model)) && Flux.stop()

# basic train loop
# assuming opt is your optimizer
Flux.train!((x,y) -> loss(x,model),params(model),[(x,y)],opt; cb = cb)

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

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

检查任何参数是否为 NaN。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?