在线性系统中使用神经网络的sigmoid()或tanh()激活函数

我正在尝试构建一个神经网络来研究一个具有连续输出变量的问题。下面描述了所使用的神经网络的示意图

神经网络的示意图:输入层大小 = 1;隐藏层大小 = 8;输出层大小 = 1。

在这种情况下,有没有理由让我使用tanh()激活函数而不是sigmoid()激活函数?我过去一直在使用sigmoid()激活函数来解决使用神经网络的逻辑回归问题,我不清楚当输出变量是连续时是否应该使用tanh()函数。

这是否取决于连续输出变量的值?例如:(i) 当输出变量从0到1归一化时使用sigmoid()(ii) 当输出变量有负值时使用tanh()。

提前感谢


回答:

除了0.5的偏置外,这两者在功能上几乎相同。重要的是

  1. 在接近0的“训练兴趣范围”内梯度大约为1;
  2. 在极端值时梯度大约为0。

一旦你考虑了这些,我怀疑你会更担心计算效率。tanh在大多数架构上计算成本高。如果这是你的担忧,可以考虑编写自己的函数,可能是一个查找表,包含范围[-4,4]内的2^10个预计算值,并在该范围之外使用“轨道”值(-1和1)。

Related Posts

如何使用Google Protobuf解析、编辑和生成object_detection/pipeline.config文件

我在一个常见的集成学习范式中训练多个模型,目前我在处理…

我的GridSearchCV不起作用,我不知道为什么

大家好,我在使用GridSearchCV时遇到了问题,…

Keras: 两个同时进行的层,其中一个对前一层的输出进行卷积

我想实现这样的模型连接: 输入图像1 -> 卷积层1 …

如何将行数据转换为列数据而不使用独热编码

我有一个如下所示的数据集。 MonthDate Day…

使用 ML Kit 与 NNAPI

我正在尝试在运行 Android 9 的设备上使用新的…

Vowpal Wabbit 可能的哈希冲突

我在VW中生成了一个模型,并且在相同的数据上生成了两个…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注