pytorch学习-激活函数

本文通过使用PyTorch演示了常见的激活函数如ReLU、Sigmoid、Tanh及Softplus等的效果,并对比了它们之间的差异。
PyTorch 2.8

PyTorch 2.8

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

激活函数(Activation Function)

一句话概括 Activation: 就是让神经网络可以描述非线性问题的步骤.
Torch 中的激励函数有很多, 不过我们平时要用到的就这几个. relu, sigmoid, tanh, softplus,下面就使用torch来看看这些激活函数.

import torch
import torch.nn.functional as F     # 激活函数存放工具包
from torch.autograd import Variable
import matplotlib.pyplot as plt

# 做一些假数据来观看图像
x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(100, 1)
x = Variable(x)

# 几种常用的 激励函数
y_relu = F.relu(x).data.numpy()
y_sigmoid = F.sigmoid(x).data.numpy()
y_tanh = F.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy()
# y_softmax = F.softmax(x)  softmax 比较特殊, 不能直接显示, 不过他是关于概率的, 用于分类

x_np = x.data.numpy()   # 换成 numpy array, 作图时使用
plt.figure(1, figsize=(8, 6))
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim((-1, 5))
plt.legend(loc='best')

plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')

plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')

plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')

plt.show()

常用的激活函数

您可能感兴趣的与本文相关的镜像

PyTorch 2.8

PyTorch 2.8

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>好的,我现在需要回答用户关于PyTorch中输出层激活函数及其应用场景的问题。首先,我需要回忆一下相关的知识,并结合提供的引用内容来组织回答。用户提到了三个引用,其中引用[1]讨论了不同任务中的输出层激活函数,引用[2]关于自定义激活函数,引用[3]则给出了一些PyTorch中的示例。 首先,我应该按照用户的要求,结构清晰地分点回答,每个任务类型(二元分类、多分类、回归)分别说明适用的激活函数、数学表达式、PyTorch实现代码和应用场景。同时,需要确保所有数学表达式使用$...$格式,独立公式用$$...$$。还要生成相关问题,并在引用处正确标注。 接下来,我需要确认每个任务对应的激活函数是否正确。二元分类通常是sigmoid,多分类用softmax,回归可能不使用激活函数或者用线性。然后,检查引用内容是否支持这些信息。例如,引用[1]提到二元分类用sigmoid,多分类用softmax,回归用线性或恒等函数,这和我的记忆一致。引用[3]中提到了tanh用于隐藏层,而sigmoid用于输出层,这适用于二元分类的情况。 然后,我需要为每个部分编写数学表达式。比如sigmoid函数是$\sigma(x) = \frac{1}{1 + e^{-x}}$,softmax是$S(z_i) = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}}$,线性函数可能不需要激活,或者用恒等函数。这些表达式需要正确使用LaTeX格式,并确保独立公式单独成段。 接下来是PyTorch的代码示例。对于sigmoid,使用nn.Sigmoid();softmax用nn.Softmax(dim=1);回归可能用nn.Identity()。需要确保代码正确,并适当注释,比如在softmax中注意dim参数的选择。 应用场景部分需要简明扼要,例如二元分类用于垃圾邮件检测,多分类用于图像分类,回归用于房价预测。这些例子需要符合实际应用,同时参考引用中的内容。例如引用[1]中的二元分类和多分类的应用场景,引用[3]中的示例。 在注意事项部分,需要提到激活函数的选择依据,如输出范围、概率分布需求等,以及自定义激活函数的可能性,这里可以引用[2]中的内容,说明虽然预定义函数常用,但有时自定义可能更好。 最后,生成的相关问题需要围绕主题展开,可能包括激活函数的选择依据、不同函数的优缺点、自定义方法、与损失函数的关系,以及回归任务中的其他激活函数。这些问题应该帮助用户进一步深入学习。 在检查过程中,需要确保所有引用标记正确,如[^1]、[^2]、[^3]分别对应到相应的引用内容。例如,在讨论二元分类时引用和,在自定义激活函数时引用[^2]。 现在,组织这些内容,确保结构清晰,符合用户的要求,同时使用正确的中文表达,避免技术错误。</think>### PyTorch输出层激活函数使用场景及示例 在PyTorch中,输出层激活函数的选择取决于任务类型。以下是三类常见任务(二元分类、多分类、回归)的激活函数应用场景及代码示例: --- #### 1. 二元分类(Binary Classification) - **激活函数**:Sigmoid - **数学表达式**: $$\sigma(x) = \frac{1}{1 + e^{-x}}$$ 输出值范围为$(0,1)$,可解释为概率。 - **PyTorch实现**: ```python import torch.nn as nn model = nn.Sequential( nn.Linear(in_features=10, out_features=1), nn.Sigmoid() ) ``` - **应用场景**:垃圾邮件检测、医学诊断(患病/健康)[^1]。 --- #### 2. 多分类(Multi-class Classification) - **激活函数**:Softmax - **数学表达式**: $$S(z_i) = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}}$$ 输出为$K$个类别的概率分布(和为1)[^1]。 - **PyTorch实现**: ```python model = nn.Sequential( nn.Linear(in_features=10, out_features=5), # 假设5个类别 nn.Softmax(dim=1) # 注意dim参数指定计算维度 ) ``` - **应用场景**:图像分类(MNIST手写数字识别)、文本情感分析(多类别情感标签)。 --- #### 3. 回归(Regression) - **激活函数**:恒等函数(Identity,即无激活函数)或线性激活 - **数学表达式**: $$f(x) = x$$ 直接输出连续值,无需非线性变换。 - **PyTorch实现**: ```python model = nn.Sequential( nn.Linear(in_features=10, out_features=1), nn.Identity() # 可省略,默认无激活函数 ) ``` - **应用场景**:房价预测、温度预测等连续值输出任务[^1]。 --- ### 注意事项 1. **输出范围匹配**:Sigmoid适合概率输出,Softmax确保概率归一化,回归任务需避免限制输出范围。 2. **与损失函数配合**: - Sigmoid通常搭配`BCELoss`(二元交叉熵) - Softmax搭配`CrossEntropyLoss`(已集成Softmax) - 回归任务常用`MSELoss`(均方误差)[^1] 3. **自定义激活函数**:可通过继承`torch.autograd.Function`实现(如改进梯度特性)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值