计算机系统应用教程网站

网站首页 > 技术文章 正文

Pytorch深度学习1:使用Pytorch实现三种常用的激活函数

btikc 2024-09-05 12:32:37 技术文章 9 ℃ 0 评论

激活函数在深度学习中的作用非常大,如果没有激活函数,所有的模型都将只是线性变换。

Pytorch中实现了多种激活函数,例如常见的ReLU、sigmoid 和 tanh。往往不同的模型,使用的激活函数对最终模型效果影响还是很大的。如何选取最佳的激活函数也是常常需要面临的一个问题。

本文将主要介绍三种常见激活函数的实现,并在实际模型中如何挑选最佳的一个激活函数。

引言

本文介绍三种常见的激活函数的实现,以及对应的对比、选取。本文分为以下几部分:

1、sigmoid激活函数的实现

2、tanh激活函数的实现

3、relu激活函数的实现

4、不同激活函数的选取

sigmoid激活函数的实现

sigmoid激活函数可以将任意输入映射到 0 到 1 之间的值,该值可以理解为概率。所以它经常用于二分类任务。

但是其当输入值较大或较小时,sigmoid函数的梯度接近0,这会导致梯度消失问题,从而在模型训练中难以训练。

借助Pytorch,它的实现也很简单,如下所示。

tanh激活函数的实现

tanh激活函数的输出范围是是(-1, 1),以零中心,有助于数据的均匀分布,从而提高训练效率。

与sigmoid类似,tanh函数在输入值较大或较小时也会遇到梯度消失的问题。

借助Pytorch,它的实现也很简单,如下所示。

relu激活函数的实现

relu相比前两个激活函数,计算起来都要更简单。

relu激活函数,当输入为正时,输出直接是输入,而输入为负时输出是0。它是一种非饱和函数,意味着它不会在输入为正数的情况下导致梯度消失。

它的缺点是由于负值部分的输出为0,这会导致网络在任意时刻只有一部分神经元被激活,增加了网络的稀疏性。

借助Pytorch,它的实现也很简单,如下所示。

不同激活函数的选取

最简单的,可以通过实验的方式,来看每个激活函数在实际模型上的效果。

代码如下所示。通过比较对应的损失情况,来选择对应的激活函数。

当你有了一定模型开发经验后,你会发现:

  • relu由于其简单性和效率,通常是隐藏层的首选激活函数。
  • sigmoid和tanh则因为其特定的输出范围,可能在输出层被用于特定类型的问题,例如二分类问题(sigmoid)或者当你需要输出在-1和1之间变化的情况(tanh)。
  • 由于梯度消失的问题,sigmoid和tanh在深层网络的隐藏层中使用得较少。在这些情况下,可能会选择ReLU的变体,如Leaky ReLU或者ELU,来缓解ReLU的一些限制。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表