问题标签 [activation-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 为什么自定义激活函数会导致网络既零损失又低准确率?
我试图通过进行以下更改来使用 tflearn 构建自定义激活函数:
将我的自定义激活函数添加到activation.py
并将其添加到__init__.py
由于 tensorflow 可以自动进行梯度计算,所以我不需要实现梯度函数。正如文章深度学习编程风格所指出的,
过去,每当有人定义一个新模型时,他们都必须手动进行导数计算。虽然数学相当简单,但对于复杂的模型,它可能是耗时且乏味的工作。所有现代深度学习库都通过自动解决梯度计算问题,使从业者/研究人员的工作变得更加轻松。
我使用以下代码在 cifar10 数据集上训练了模型:https ://github.com/tflearn/tflearn/blob/master/examples/images/convnet_cifar10.py 但将所有relu激活更改为my_activation。
可悲的是,这个简单的修改导致网络无法学习任何东西:
由于我只是一个初学者,我不知道导致网络成为零损失和低准确率的原因(NaN输出?无谓?)。谁能告诉我如何解决这个问题?谢谢!
请注意,我不是在问如何构建自定义激活函数。关于如何制作自定义函数的问题:
python - 如何将转换应用于单个神经元?
通常,激活函数应用于给定层的所有神经元,如
我怎样才能应用激活函数来只说第二个神经元?
如何仅将特定转换(例如tf.exp()
)应用于特定神经元?
切片列不能在这里应用,因为要切片列我需要知道行数并且在构建时是未知的。
python - ValueError:尺寸必须相等,但对于“activation_2/p_re_lu_l/mul”(操作:“Mul”)为 16 和 28
我是李 我有一个关于图像识别的问题。我现在使用的代码引用了上传到 brendan fortuner 的 github 的代码。我用了一个PReLU激活函数,这部分好像有问题。我试图解决它,但它不起作用,所以我会给你一个关于解决问题的提示。请给我一个关于解决问题的提示。
模型运行过程中出现如下错误:
c# - 如何使用 C# 创建一个简单的一次性激活过程?
我想为我的 Windows 窗体应用程序创建一个简单的一次性激活过程。所以,我基本上有两种形式,form1是激活窗口,form2是实际程序。我在下面给出的form1中创建了一个非常基本的激活程序
现在,问题是每次我加载我的程序时,它总是加载form1,即使有人pattern
之前成功输入过一次密钥(即)。我如何存储该信息,以便如果有人输入正确的密钥,之后每次加载程序时它都会自动显示form2(即我的实际程序)并跳过form1。顺便说一句,我知道还有其他更先进和更安全的方法可以做到这一点,但我目前只是对这种非常基本的方法感兴趣。任何人都可以帮忙吗?
python - 自定义 sigmoid 激活函数
所以,我正在使用 Keras 来实现卷积神经网络。在我的解码拓扑结束时,有一个带有 sigmoid 激活的 Conv2D 层。
基本上,我想更改 sigmoid 实现,我的目标是使其成为二进制类型的激活,如果 sigmoid 函数的值低于 0.5,则返回 0,如果它的值等于或高于 0.5,则返回 1。
在 Tensorflow 实现中搜索,我发现 sigmoid 是这样的:
我在操作 gen_math_ops 返回时遇到问题,将其值与 0.5 阈值进行比较。我知道由于张量类型的限制而不能使用通常的 if,那么我应该如何解决这个问题?
machine-learning - ReLU 激活函数输出大量数字
我终于能够实现反向传播,但仍有一些错误需要修复。主要问题如下:我的 ReLU 激活函数产生非常大的 dJdW 值(误差函数 wrt 权重的导数)。 当从权重中减去它时,我的输出变成了 -int 或 inf 的矩阵。我该如何阻止这个?到目前为止,我唯一的解决方案是让我的学习率标量变量非常小。
我首先使用 sigmoid 制作了 ANN,但 Leaky ReLU 更快。代码有点多,所以总结一下:
- 神经网络类
- 定义超参数和东西(包括非常小的学习率标量)
- 激活函数及其导数(ReLU和 sigmoid)
- 成员函数:前向传播、反向传播、setBatchSize 等。
- 实例化 ANN
- 设置超参数(ANN 的拓扑)
- 创建数据(一个数组的值为 x,输出数组的值为 x+1)
- 训练
- 使用步骤 2 中生成的输入来训练 ANN
- 测试
- 使用随机生成的输入进行测试
- 用户可以提供输入
希望能帮助你帮助我。谢谢!
machine-learning - 如何在 tensorflow train API 中使用我自己的激活函数?
我可以定义自己的激活函数并在 TensorFlow Train API 中使用它,即具有预定义估计器(如DNNClassifier )的高级 API吗?
例如,我想使用此代码,但将激活函数tf.nn.tanh替换为我自己的:
machine-learning - 在简单的多层 FFNN 中,只有 ReLU 激活函数不会收敛
我正在学习 tensorflow、深度学习和实验各种激活函数。
我为 MNIST 问题创建了一个多层 FFNN。主要基于 tensorflow 官方网站上的教程,除了添加了 3 个隐藏层。
我实验过的激活函数是:tf.sigmoid
, tf.nn.tanh
, tf.nn.softsign
, tf.nn.softmax
, tf.nn.relu
. 只是tf.nn.relu
不收敛,网络输出随机噪声(测试精度在 10% 左右)。以下是我的源代码:
代码输出如下:
如果tf.nn.relu
用其他激活函数替换,网络精度会逐渐提高(尽管最终精度不同),这是预期的。
我在 5 月份的教科书/教程中读到 ReLU 应该是第一个作为激活函数的候选者。
我的问题是为什么 ReLU 在我的网络中不起作用?还是我的程序完全错误?
neural-network - 为什么在卷积神经网络中使用 ReLU 作为激活单元?
我正在尝试使用 CNN 对图像进行分类,据我所知,ReLu 是每个卷积层中激活单元的流行选择。根据我的理解,ReLU 会保留所有正图像强度并将负图像强度转换为 0。对我来说,这就像处理步骤,根本不是真正的“触发”步骤。那么在这里使用 ReLU 的目的是什么?
neural-network - 使用 relu 进行梯度下降的影响
relu 激活函数不包含导数这一事实有什么影响?
如何在 Numpy 中实现 ReLU 函数将 relu 实现为(0 ,矩阵向量元素)的最大值。
这是否意味着对于梯度下降我们不采用 relu 函数的导数?
更新 :
本文有助于理解:
ReLU 函数定义为: 对于 x > 0,输出为 x,即 f(x) = max(0,x)
所以对于导数 f '(x) 它实际上是:
如果 x < 0,则输出为 0。如果 x > 0,则输出为 1。
导数 f'(0) 没有定义。因此它通常设置为 0,或者您将激活函数修改为 f(x) = max(e,x) 以获得较小的 e。
一般来说:一个 ReLU 是一个使用 rectifier 激活函数的单元。这意味着它的工作原理与任何其他隐藏层完全相同,但除了 tanh(x)、sigmoid(x) 或您使用的任何激活之外,您将改为使用 f(x) = max(0,x)。
如果您已经为具有 sigmoid 激活功能的多层网络编写了代码,那么这实际上是 1 行更改。前向或反向传播在算法上没有任何变化。如果您还没有使用更简单的模型,请先返回并从该模型开始。否则,您的问题实际上不是关于 ReLU,而是关于整体实现 NN。
但这仍然会留下一些混乱,因为神经网络成本函数通常需要激活函数的导数,那么对于 relu,这对成本函数有何影响?