问题标签 [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.

0 投票
2 回答
2464 浏览

tensorflow - TensorFlow 自定义激活函数

我使用 TensorFlow 实现了一个网络,并在我的代码中创建了执行以下操作的模型:

我初始化权重和偏差:

现在我想使用自定义激活函数。因此,我tf.nn.relu(layer_1)用定义为的自定义激活函数替换了custom_sigmoid(layer_1)

beta可训练参数在哪里。我意识到这是行不通的,因为我不知道如何实现派生以便 TensorFlow 可以使用它。

问题:如何在 TensorFlow 中使用自定义激活函数?我真的很感激任何帮助。

0 投票
1 回答
554 浏览

machine-learning - 具有输入的神经网络 - Relu - SoftMax - 交叉熵权重和激活无界增长

我已经实现了一个神经网络,它有 3 层输入到隐藏层,有 30 个神经元(Relu 激活)到 Softmax 输出层。我正在使用交叉熵成本函数。没有使用外部库。这是在 NMIST 数据集上工作,因此有 784 个输入神经元和 10 个输出神经元。使用双曲正切作为隐藏层激活的准确率约为 96%。当我尝试切换到 relu 激活时,我的激活增长非常快,这导致我的权重也无限增长,直到它爆炸!

这是使用 relu 激活时的常见问题吗?

我尝试过 L2 正则化,但收效甚微。与 tanh 激活相比,我最终不得不将学习率设置为低 10 倍,并且我尝试相应地调整权重衰减率,但我得到的最佳准确度仍然约为 90%。最终,权重衰减的速度仍然超过网络中某些权重的更新,从而导致爆炸。似乎每个人都只是用 relu 替换了他们的激活函数,他们体验到了更好的结果,所以我一直在寻找错误并验证我的实现。使用 relu 作为激活函数还有更多内容吗?也许我的实现有问题,有人可以用相同的神经网络结构验证准确性吗?

0 投票
2 回答
6571 浏览

machine-learning - 用于多类分类的 Sigmoid 激活?

我正在从头开始实现一个简单的神经网络,只是为了练习。对于二进制分类问题,我已经让它与 sigmoid、tanh 和 ReLU 激活一起正常工作。我现在正试图将它用于多类、互斥的问题。当然,softmax 是最好的选择。

不幸的是,我在理解如何在反向传播中实现 softmax、交叉熵损失和它们的导数时遇到了很多麻烦。即使在这里和 Cross Validated 上提出了几个问题,我也无法获得任何好的指导。

在我尝试进一步实现 softmax 之前,是否有可能以某种方式使用 sigmoid 来解决多类问题(我试图预测 n 个字符中的 1 个,它们被编码为 one-hot 向量)?如果是这样,哪个损失函数最好?我一直在对所有二元分类使用平方误差。

0 投票
1 回答
790 浏览

machine-learning - 深度神经网络不学习

我正在用新创建的激活函数在 8 层 (1568-784-512-256-128-64-32-10) 全连接深度神经网络上训练 MNIST,如下图所示。这个函数看起来有点类似于然而,ReLU 在“扭结”处给出了一个垃圾曲线。

当我用它来训练 5 层、6 层和 7 层的全连接神经网络时,它工作得很好。当我在 8 层全连接神经网络中使用它时,问题就出现了。它只会在第 1 个 epoch 学习然后停止学习(Test Loss 给出“nan”并且测试准确率下降到 9.8%)。为什么会这样?

我的其他配置如下:Dropout=0.5,权重初始化=Xavier初始化,学习率=0.1

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
61 浏览

java - 我的神经网络有更好的激活函数吗?

我正在编写一个程序来识别手写字母。我有 500px*500px 图像作为 BufferedImages 导入,我将每个像素的 getRBG() 值作为神经网络的输入,因此有 250,000 个输入。getRGB() 的值范围从 -16777216(表示写入)到 -1(表示白色背景)。从输入到第一个隐藏节点的权重从 0 到 1 随机化。我一直使用 sigmoid 函数1/(1+e^(-x))作为激活函数来获取 0 到 1 之间的所有值。不过,我的问题是,因为有许多输入,当我将它们与权重相乘时,我得到一个巨大的数字(例如,1.3E8-1.3E8)。然后,当我将该数字放入 sigmoid 函数时,结果总是全 1 或全 0,因此它基本上没有将有价值的信息传递给第二个隐藏节点。此外,由于图像主要是白色,因此大多数输入为 -1。

我调整了代码,使其在点积之后打印值,然后在它们通过 sigmoid 函数后打印它。

为了编辑 getRGB() 值,我使用了该函数,newRGBValue = (getRGB() + 2) * (-1)因此所有值的范围从 -1 到 16777214。但是,当我将所有这些值传递给 sigmoid 函数时,它只返回 1,因为具有这些值的新点积是巨大的正数(如下面的输出所示)。

我应该为这个程序使用更好的激活功能吗?或者有没有办法可以操纵输入以使 sigmoid 函数适合?很抱歉这篇冗长的帖子,并提前感谢您的任何见解。

0 投票
1 回答
6098 浏览

python - 使用 NumPy 的 ReLU 导数

上面的代码打印出来:

代替

据我了解,我使用的函数调用应该只是按值传递,传递变量的副本。

为什么我的 d_relu 函数会影响 y 变量?

0 投票
1 回答
2559 浏览

r - R中带有神经网络包的ReLU激活函数

由于神经网络包没有ReLU函数,所以我尝试编写ReLU函数的代码。但是有一个我不明白的错误。请在下面查看我的代码和错误信息。

deriv.formula(eval(parse(text = text)), "x", func = eval(parse(text = text2)), 中的错误:函数 'ifelse' 不在导数表中

0 投票
1 回答
4627 浏览

python - 在python中实现sigmoid函数

我正在尝试为 XOR 函数实现一个简单的神经网络。我使用的激活函数是 Sigmoid 函数。sigmoid函数的代码是:

我的问题是这个函数总是返回一个介于 0.7 和 0.8 之间的值。这个问题在输出过程中显示出主要影响。

任何建议都会被采纳。

0 投票
0 回答
126 浏览

tensorflow - 监督分类结合离策略强化学习

我有 2 个神经网络:

  1. 使用离策略强化学习预测动作值 Q(s, a) - 估计对对手平均行为的最佳响应。
  2. 使用监督分类模仿自己的平均最佳响应行为。

这是我的模型(Keras):

正如 Heinrich 和 Silver 的论文“不完美信息游戏中的自我游戏的深度强化学习”中所述 - 网络必须更新如下:

更新日志损失和均方误差

我不确定我是否正确实施了它 - 我确定categorical_crossentropy并且mean_squared_error是正确的损失函数。但我不确定是否softmax并且relu是正确的激活函数。

如论文所述:

为了在 Leduc Hold'em 中学习,我们手动校准了 NFSP,用于具有 64 个神经元的 1 个隐藏层和校正线性激活的全连接神经网络。

他们relu用作激活函数,但我猜他们认为是best response network因为在监督分类中使用它没有意义relu,我想获得可能动作的概率分布。

我无法重现论文中的实验,只是想确保网络设置正确。

干杯

0 投票
1 回答
2482 浏览

python - Keras - softmax 函数的默认轴设置为 Axis

我正在学习如何创建顺序模型。我有一个模型:

然后我继续添加池化层和卷积层(这很好)。但是在创建密集层时:

返回的行:

由于未定义轴而导致错误。Keras 和 TensorFlow 文档都显示 softmax 的默认轴是 None 或 -1。

这是keras的错误吗?是否有一个简单的解决方法(如果我要设置轴,我不确定输入张量是什么)?

- 如果需要,我可以添加其余代码,但它只是由其他层组成,我认为它不会有太大帮助。