问题标签 [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.
tensorflow - TensorFlow 自定义激活函数
我使用 TensorFlow 实现了一个网络,并在我的代码中创建了执行以下操作的模型:
我初始化权重和偏差:
现在我想使用自定义激活函数。因此,我tf.nn.relu(layer_1)
用定义为的自定义激活函数替换了custom_sigmoid(layer_1)
:
beta
可训练参数在哪里。我意识到这是行不通的,因为我不知道如何实现派生以便 TensorFlow 可以使用它。
问题:如何在 TensorFlow 中使用自定义激活函数?我真的很感激任何帮助。
machine-learning - 具有输入的神经网络 - Relu - SoftMax - 交叉熵权重和激活无界增长
我已经实现了一个神经网络,它有 3 层输入到隐藏层,有 30 个神经元(Relu 激活)到 Softmax 输出层。我正在使用交叉熵成本函数。没有使用外部库。这是在 NMIST 数据集上工作,因此有 784 个输入神经元和 10 个输出神经元。使用双曲正切作为隐藏层激活的准确率约为 96%。当我尝试切换到 relu 激活时,我的激活增长非常快,这导致我的权重也无限增长,直到它爆炸!
这是使用 relu 激活时的常见问题吗?
我尝试过 L2 正则化,但收效甚微。与 tanh 激活相比,我最终不得不将学习率设置为低 10 倍,并且我尝试相应地调整权重衰减率,但我得到的最佳准确度仍然约为 90%。最终,权重衰减的速度仍然超过网络中某些权重的更新,从而导致爆炸。似乎每个人都只是用 relu 替换了他们的激活函数,他们体验到了更好的结果,所以我一直在寻找错误并验证我的实现。使用 relu 作为激活函数还有更多内容吗?也许我的实现有问题,有人可以用相同的神经网络结构验证准确性吗?
machine-learning - 用于多类分类的 Sigmoid 激活?
我正在从头开始实现一个简单的神经网络,只是为了练习。对于二进制分类问题,我已经让它与 sigmoid、tanh 和 ReLU 激活一起正常工作。我现在正试图将它用于多类、互斥的问题。当然,softmax 是最好的选择。
不幸的是,我在理解如何在反向传播中实现 softmax、交叉熵损失和它们的导数时遇到了很多麻烦。即使在这里和 Cross Validated 上提出了几个问题,我也无法获得任何好的指导。
在我尝试进一步实现 softmax 之前,是否有可能以某种方式使用 sigmoid 来解决多类问题(我试图预测 n 个字符中的 1 个,它们被编码为 one-hot 向量)?如果是这样,哪个损失函数最好?我一直在对所有二元分类使用平方误差。
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 函数适合?很抱歉这篇冗长的帖子,并提前感谢您的任何见解。
python - 使用 NumPy 的 ReLU 导数
上面的代码打印出来:
代替
据我了解,我使用的函数调用应该只是按值传递,传递变量的副本。
为什么我的 d_relu 函数会影响 y 变量?
r - R中带有神经网络包的ReLU激活函数
由于神经网络包没有ReLU函数,所以我尝试编写ReLU函数的代码。但是有一个我不明白的错误。请在下面查看我的代码和错误信息。
deriv.formula(eval(parse(text = text)), "x", func = eval(parse(text = text2)), 中的错误:函数 'ifelse' 不在导数表中
python - 在python中实现sigmoid函数
我正在尝试为 XOR 函数实现一个简单的神经网络。我使用的激活函数是 Sigmoid 函数。sigmoid函数的代码是:
我的问题是这个函数总是返回一个介于 0.7 和 0.8 之间的值。这个问题在输出过程中显示出主要影响。
任何建议都会被采纳。
tensorflow - 监督分类结合离策略强化学习
我有 2 个神经网络:
- 使用离策略强化学习预测动作值 Q(s, a) - 估计对对手平均行为的最佳响应。
- 使用监督分类模仿自己的平均最佳响应行为。
这是我的模型(Keras):
正如 Heinrich 和 Silver 的论文“不完美信息游戏中的自我游戏的深度强化学习”中所述 - 网络必须更新如下:
我不确定我是否正确实施了它 - 我确定categorical_crossentropy
并且mean_squared_error
是正确的损失函数。但我不确定是否softmax
并且relu
是正确的激活函数。
如论文所述:
为了在 Leduc Hold'em 中学习,我们手动校准了 NFSP,用于具有 64 个神经元的 1 个隐藏层和校正线性激活的全连接神经网络。
他们relu
用作激活函数,但我猜他们认为是best response network
因为在监督分类中使用它没有意义relu
,我想获得可能动作的概率分布。
我无法重现论文中的实验,只是想确保网络设置正确。
干杯
python - Keras - softmax 函数的默认轴设置为 Axis
我正在学习如何创建顺序模型。我有一个模型:
然后我继续添加池化层和卷积层(这很好)。但是在创建密集层时:
返回的行:
由于未定义轴而导致错误。Keras 和 TensorFlow 文档都显示 softmax 的默认轴是 None 或 -1。
这是keras的错误吗?是否有一个简单的解决方法(如果我要设置轴,我不确定输入张量是什么)?
- 如果需要,我可以添加其余代码,但它只是由其他层组成,我认为它不会有太大帮助。