当前位置: 首页 > 知识库问答 >
问题:

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

王亮
2023-03-14

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

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

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

共有1个答案

南宫兴德
2023-03-14

如您所见,Relu函数在正值上是无界的,因此创建了要增长的权重

事实上,这就是为什么在这些情况下使用双曲正切函数和相似函数,将输出值限制在一定范围内(大多数情况下为-1到1或0到1)

还有另一种方法来处理这种现象,称为权重衰减。基本动机是得到一个更普遍的模型(避免过度拟合),并确保权重不会膨胀。更新权重时,根据权重本身使用一个调节值,这意味着权重越大,惩罚越大

你可以在这里进一步了解它

 类似资料:
  • 本文向大家介绍神经网络为啥用交叉熵。相关面试题,主要包含被问及神经网络为啥用交叉熵。时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节点,而即便是ResNet取消了全连接层,也会在最后有一个1000个节点的输出层。 一般情况

  • 我刚刚在CNN上读完斯坦福CS231n的笔记,有一个现场演示的链接;但是,我不确定演示中的“激活”、“激活梯度”、“权重”和“权重梯度”指的是什么。以下截图是从演示中复制的。 混淆点1 首先,我对输入层的“激活”是指什么感到困惑。根据注释,我认为激活层指的是CNN中的RELU层,它本质上告诉CNN应该点亮哪些神经元(使用RELU函数)。我不确定这与如下所示的输入层有何关系。此外,为什么会显示两幅图

  • 我试图得到F1,LSTM模型交叉验证的精度和召回率。 我知道如何显示精度,但当我尝试使用交叉验证显示其他指标时,我会得到许多不同的错误。 我的代码如下: 我得到的错误如下: 纪元1/1 1086/1086 [==============================] - 18s 17ms/阶跃损失: 0.6014-acc: 0.7035 ----------------------------

  • 本文向大家介绍问题:神经网络激活函数?相关面试题,主要包含被问及问题:神经网络激活函数?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: sigmod、tanh、relu 解析:需要掌握函数图像,特点,互相比较,优缺点以及改进方法

  • 我正在尝试使用CNN对图像进行分类,据我所知,ReLu是每个卷积层中激活单元的常用选择。根据我的理解,ReLU将保留所有正图像强度,并将负图像强度转换为0。对我来说,这就像是处理步骤,而不是真正的“启动”步骤。那么,在这里使用ReLU的目的是什么?

  • 问题内容: 我正在尝试训练数据不平衡的网络。我有A(198个样本),B(436个样本),C(710个样本),D(272个样本),并且我已经阅读了有关“weighted_cross_entropy_with_logits”的信息,但是我发现的所有示例都是针对二进制分类的,因此我不太了解对如何设置这些权重充满信心。 样本总数:1616 A_weight:198/1616 = 0.12? 如果我理解的话