Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 为什么tanh在简单神经网络中的性能优于relu_Neural Network - Fatal编程技术网

Neural network 为什么tanh在简单神经网络中的性能优于relu

Neural network 为什么tanh在简单神经网络中的性能优于relu,neural-network,Neural Network,以下是我的方案 我使用过EMNIST英文大写字母数据库。 我的神经网络如下所示 输入层有784个神经元,它们是图像28x28灰度图像的像素值除以255,因此值将在[0,1]范围内 隐藏层有49个神经元与先前的784完全连接 输出层有9个表示图像类别的神经元 损耗函数定义为输出层softmax的交叉熵。 将所有权重初始化为[-1,+1]中的随机实数 现在,我为每堂课做了500个固定样本的培训 简单地说,将500x9图像传递给训练函数,该函数使用backpropagation,并通过learning

以下是我的方案
我使用过EMNIST英文大写字母数据库。
我的神经网络如下所示

  • 输入层有784个神经元,它们是图像28x28灰度图像的像素值除以255,因此值将在[0,1]范围内
  • 隐藏层有49个神经元与先前的784完全连接
  • 输出层有9个表示图像类别的神经元
  • 损耗函数定义为输出层softmax的交叉熵。
    将所有权重初始化为[-1,+1]中的随机实数
  • 现在,我为每堂课做了500个固定样本的培训

    简单地说,将
    500x9
    图像传递给训练函数,该函数使用
    backpropagation
    ,并通过
    learning\u rate*derivative\u loss\u wrt\u correlated\u weight
    改变权重进行100次迭代

    我发现当我在神经元上使用tanh激活时,网络的学习速度比relu快,学习速度
    0.0001

    我的结论是,因为tanh比relu在固定测试数据集上的准确性更高。此外,tanh在100个时期后的损失值略低

    雷卢的表现不是更好吗

    雷卢的表现不是更好吗

    一般来说,没有。RELU在很多问题上都会表现得更好,但不是所有的问题

    此外,如果您使用经过优化的体系结构和参数集,以便在一个激活函数中运行良好,那么在切换到另一个激活函数后,您可能会得到更糟糕的结果

    通常,您需要调整架构和参数(如学习率),以获得可比的结果。这可能意味着更改示例中隐藏节点的数量和/或学习速率


    最后一点注意:在我所看到的MNIST示例架构中,具有RELU激活的隐藏层后面通常是退出层,而具有sigmoid或tanh激活的隐藏层则不是。尝试在隐藏层后添加dropout,看看这是否会改善RELU的效果。请参阅Keras MNIST示例。

    我的输出目标变量Y由介于-1和1之间的浮动值组成。因此,我愿意在keras深度学习模型的最后一层使用“tanh”激活功能。在这种情况下,首选哪种“损失函数”?