深度学习21:PyTorch:激活函数(Sigmoid,Tanh,ReLU,Softmax)

目录标题

一、Sigmoid函数

python 复制代码
import torch
import matplotlib.pyplot as plt

x = torch.linspace(-10, 10, steps=1000, requires_grad=True)
y = torch.sigmoid(x)

# 画图
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(12, 4))

# 1. 原函数图像
ax[0].plot(x.data, y.data, "purple")
ax[0].set_title("sigmoid(x)")
# 绘制参考线
ax[0].axhline(y=0.5, color='gray', alpha=0.5, linewidth=1)
ax[0].axhline(y=1, color='gray', alpha=0.5, linewidth=1)

# 图的边框
ax[0].spines['top'].set_visible(False)
ax[0].spines['right'].set_visible(False)
ax[0].spines['left'].set_position('zero')
ax[0].spines['bottom'].set_position('zero')

# 反向传播,计算 x 的梯度
y.sum().backward()

# 2. 导数函数图像
ax[1].plot(x.data, x.grad, "purple")
ax[1].set_title("sigmoid'(x)")

# 图的边框
ax[1].spines['top'].set_visible(False)
ax[1].spines['right'].set_visible(False)
ax[1].spines['left'].set_position('zero')
ax[1].spines['bottom'].set_position('zero')

# plt.show()
plt.savefig('sigmoid_result.png')

二、Tanh函数

python 复制代码
import torch
import matplotlib.pyplot as plt

x = torch.linspace(-5, 5, steps=1000, requires_grad=True)
y = torch.tanh(x)

# 画图
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(12, 4))

# 1. 原函数图像
ax[0].plot(x.data, y.data, "purple")
ax[0].set_title("tanh(x)")
# 绘制参考线
ax[0].axhline(y=-1, color='gray', alpha=0.5, linewidth=1)
ax[0].axhline(y=1, color='gray', alpha=0.5, linewidth=1)

# 图的边框
ax[0].spines['top'].set_visible(False)
ax[0].spines['right'].set_visible(False)
ax[0].spines['left'].set_position('zero')
ax[0].spines['bottom'].set_position('zero')

# 反向传播,计算 x 的梯度
y.sum().backward()

# 2. 导数函数图像
ax[1].plot(x.data, x.grad, "purple")
ax[1].set_title("tanh'(x)")

#图的边框
ax[1].spines['top'].set_visible(False)
ax[1].spines['right'].set_visible(False)
ax[1].spines['left'].set_position('zero')
ax[1].spines['bottom'].set_position('zero')

# plt.show()
plt.savefig('tanh_result.png')

三、ReLU函数

python 复制代码
import torch
import matplotlib.pyplot as plt

x = torch.linspace(-5, 5, steps=1000, requires_grad=True)
y = torch.relu(x)

# 画图
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(12, 4))

# 1. 原函数图像
ax[0].plot(x.data, y.data, "purple")
ax[0].set_title("relu(x)")

ax[0].spines['top'].set_visible(False)
ax[0].spines['right'].set_visible(False)
ax[0].spines['left'].set_position('zero')
ax[0].spines['bottom'].set_position('zero')

# 反向传播,计算 x 的梯度
y.sum().backward()

# 2. 导数函数图像
ax[1].plot(x.data, x.grad, "purple")
ax[1].set_title("relu'(x)")

ax[1].spines['top'].set_visible(False)
ax[1].spines['right'].set_visible(False)
ax[1].spines['left'].set_position('zero')
ax[1].spines['bottom'].set_position('zero')

# plt.show()
plt.savefig('relu_result.png')

四、Softmax函数

python 复制代码
import torch

# n * m 3条样本,5个特征项
x = torch.randn(3,5)
print(x)

#指定是那个维度为分类概率(即一列是一条数据还是一行是一条数据)
y = torch.softmax(x,dim=1)
print(y)
相关推荐
ahccqw1 小时前
Opencv 基础常用API
人工智能·opencv·计算机视觉
FelixZhang0281 小时前
不懂金融或不会编程,如何开始量化?从策略搭建到回测验证
人工智能·python·算法·数学建模·均值算法·自然语言处理·金融
可乐ea1 小时前
Kimi K3.1 Pro 选型:1M 上下文和每任务成本怎么算
人工智能·计算机视觉·ai智能体·上下文窗口·大模型选型·kimik3.1pro·agent成本
Dawson Zhu1 小时前
【AI编译器入门③】编译前端:ONNX、TorchScript与动态shape处理
人工智能·语言模型·架构·aigc·agi
愤怒火龙果1 小时前
AI攻防 AIRT05-AI Supply Chain and Infrastructure Attacks
人工智能·ai安全
Yan-英杰1 小时前
手机/平板远控电脑哪个好用?ToDesk、向日葵、TeamViewer 六大维度实测对比
人工智能·智能手机·电脑·teamviewer·ai开发工具
Solange__1 小时前
AI模型编辑器、Blender和3D Agent怎么选?按5类修改任务比较局部编辑、拓扑与自动化
人工智能·3d·自然语言处理·编辑器·音视频·blender·游戏策划
lucas_AI1 小时前
为什么大模型总敢一本正经地胡说?研究者关掉了它脑内的 8 个「自信开关」
人工智能·llm
Dovis(誓平步青云)1 小时前
切换语言后按钮被截断,本地化审计怎样发现长度风险
开发语言·前端·javascript·人工智能·机器学习·华为·harmonyos