- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 node.js 程序中,我运行了这段代码
console.log(Math.tanh(-858.625086043538));
它返回了 NaN
。然而,tanh(双曲正切)http://mathworld.wolfram.com/HyperbolicTangent.html为所有 x
定义。它应该只返回 -1
,但它给出了 NaN
。有谁知道怎么了?
谢谢
最佳答案
在 Node.js (v5.4.1) version of V8 (4.6.85.31) 中看起来是一个糟糕的实现这是采用 e^(+/-x) ,对于更大的输入,会导致返回 (-Infinity/Infinity
) ,进一步是 NaN
.
好消息是这已在 V8 version v4.8.87 with a commit that moved to a js fdlibm port 中修复.这就是它适用于您当前版本的 Chrome DevTools 的原因。
如果您不能等到 Node.js 引入最新的 V8,您可以移植 current V8 implementation进入您自己的代码(基于 this port of fdlibm ),这似乎工作正常。您只是冒着将来可能对 真正的 V8 Math.tanh 进行任何修复或更改的风险。这是 V8/fdlibm 端口:
Math.tanh = function (x) {
x = x * 1; // Convert to number.
// x is Infinity or NaN
if (!Math.abs(x) === Infinity) {
if (x > 0) return 1;
if (x < 0) return -1;
return x;
}
var ax = Math.abs(x);
var z;
// |x| < 22
if (ax < 22) {
var twoM55 = 2.77555756156289135105e-17; // 2^-55, empty lower half
if (ax < twoM55) {
// |x| < 2^-55, tanh(small) = small.
return x;
}
if (ax >= 1) {
// |x| >= 1
var t = Math.exp(2 * ax);
z = 1 - 2 / (t + 2);
} else {
var t = Math.exp(-2 * ax);
z = -t / (t + 2);
}
} else {
// |x| > 22, return +/- 1
z = 1;
}
return (x >= 0) ? z : -z;
};
关于javascript - Tanh 为大输入返回 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34835641/
我刚刚看到 Accelerate 框架有这个:我有一个执行大量 tanh 计算的函数。 void vvatanh ( double *, const double *, const int * );
我想设置一个神经网络,我问自己这两个函数之间是否有区别? tf.nn.tanh 与 tf.tanh 最佳答案 很容易确认它们是相同的: In [1]: import tensorflow as tf
我正在尝试编写一个 Python 程序来使用 Tanh-sinh 求积来计算以下值: 但是尽管程序收敛到一个合理的值并且在每种情况下都没有错误,但它没有收敛到正确的值(对于这个特定的积分是 pi)而且
我有一个函数,它接受另一个函数作为参数: #include void someFunc(const std::function &fn); 如何将函数 tanh 作为 someFunc 的参数传递?
这是 Microsoft 为 Complex 的 Sinh 实现的 public static Complex Sinh(Complex value) /* Hyperbolic sin */ {
在我的 node.js 程序中,我运行了这段代码 console.log(Math.tanh(-858.625086043538)); 它返回了 NaN。然而,tanh(双曲正切)http://mat
我正在研究生成对抗网络。最近,在阅读 Radford 等人的一篇论文时。 here ,我发现他们的生成器网络的输出层使用了Tanh()。 Tanh()的取值范围是(-1, 1),而 double 格式
我有两个感知器算法,除了激活函数外,它们都相同。一个使用单步函数 1 if u >= 0 else -1 另一个使用 tanh 函数 np.tanh(u)。 我预计 tanh 的性能会优于该步骤,但实
我有一个 Java 程序,它多次调用 Math.tanh() 函数。出于好奇,我想与 C++ 进行比较。因此我写了两个小程序,一个是Java,一个是C++,来测试。 Java代码: public cl
我想计算 LeNet-5 ( paper) 的每一层需要多少触发器。一些论文总共给出了其他架构的 FLOPs(1,2,3)但是,这些论文没有详细说明如何计算 FLOPs 的数量,我不知道有多少 FLO
我正在使用由 4 个输入神经元、1 个由 20 个神经元组成的隐藏层和一个由 7 个神经元输出层组成的神经网络。 我正在尝试为 bcd 到 7 段算法训练它。我的数据被归一化 0 是 -1,1 是 1
y = Math.Tanh(x) 是 x 的双曲正切值。但我需要 f(y) = x。对于正切线,有 Arctan,但 Arctanh 在哪里? 谢谢! 最佳答案 我认为 C# 库不包含弧双曲三角函数,
我正在编写一些基本的神经网络方法 - 特别是激活函数 - 并且已经达到了我垃圾数学知识的极限。我理解各自的范围(-1/1)(0/1)等,但不同的描述和实现让我感到困惑。 具体来说,sigmoid、lo
我真的需要帮助在非常基本的神经网络中实现连续的 tanh-sigmoid 激活函数。如果你能给出一个基本的例子那就太好了,但如果你能在我的 source code 中改变它我将不胜感激!另外,随机权重
有人知道如何在 python 中实现 tanh-estimator 吗?我有一个不遵循高斯分布的数字列表。我想使用 tanh-estimator 作为预处理步骤,但我不知道如何在 python 中实现
MathNet.Symbolics.Infix 解析器是否有识别更复杂的三角函数(如 tanh)的方法?我在 F# 中尝试了以下内容,但无法识别(我得到一个未定义的表达式)。当我将“tanh”替换为“
正如许多论文指出的那样,为了获得更好的神经网络学习曲线,最好以值匹配高斯曲线的方式对数据集进行归一化。 这是否仅在我们使用 sigmoid 函数作为压缩函数时适用?如果不是,哪种偏差最适合 tanh
我想使用 keras 功能 api 将一个 tanh 层添加到嵌入层: x=layers.Embedding(vocab_size, 8, input_length=max_length)(input
我知道这个决定取决于任务,但让我解释一下。 我正在设计一个模型,该模型使用末端具有密集层的卷积神经网络来预测给定仪表板视频帧的转向角度。在我的最后一个密集层中,我只有一个预测转向角的单元。 我的问题是
这个问题产生于 separate question ,结果证明它有一些明显的机器特定的怪癖。当我运行下面列出的 C++ 代码来记录 tanh 和 exp 之间的时间差异时,我看到以下结果: tanh:
我是一名优秀的程序员,十分优秀!