7.1 激活函数
PyTorch中已经实现了神经网络中可能用到的各种激活函数,我们在代码中只要直接调用即可。
7.1.1 Sigmoid函数
![图片[1]-第 7 章 用PyTorch进行深度学习-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-300.png)
![图片[2]-第 7 章 用PyTorch进行深度学习-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-301.png)
Sigmoid函数与其导数图像绘制代码:
import torch
import matplotlib.pyplot as plt
x = torch.linspace(-10, 10, 1000, requires_grad=True)
fig, ax = plt.subplots(1, 2)
fig.set_size_inches(12, 4)
ax[0].plot(x.data, torch.sigmoid(x).data, "purple")
ax[0].set_title("sigmoid(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")
ax[0].axhline(0.5, color="gray", alpha=0.7, linewidth=1)
ax[0].axhline(1, color="gray", alpha=0.7, linewidth=1)
torch.sigmoid(x).sum().backward() # 反向传播计算梯度
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")
ax[1].set_ylim(0, 0.3)
plt.show()
7.1.2 Tanh函数
![图片[3]-第 7 章 用PyTorch进行深度学习-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-302.png)
![图片[4]-第 7 章 用PyTorch进行深度学习-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-303.png)
Tanh函数与其导数图像绘制代码:
import torch
import matplotlib.pyplot as plt
x = torch.linspace(-5, 5, 1000, requires_grad=True)
fig, ax = plt.subplots(1, 2)
fig.set_size_inches(12, 4)
ax[0].plot(x.data, torch.tanh(x).data, "purple")
ax[0].set_title("tanh(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")
ax[0].axhline(-1, color="gray", alpha=0.7, linewidth=1)
ax[0].axhline(1, color="gray", alpha=0.7, linewidth=1)
torch.tanh(x).sum().backward() # 反向传播计算梯度
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()
7.1.3 ReLU函数
![图片[5]-第 7 章 用PyTorch进行深度学习-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-304.png)
![图片[6]-第 7 章 用PyTorch进行深度学习-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-305.png)
ReLU函数与其导数图像绘制代码:
import torch
import matplotlib.pyplot as plt
x = torch.linspace(-5, 5, 1000, requires_grad=True)
fig, ax = plt.subplots(1, 2)
fig.set_size_inches(12, 4)
ax[0].plot(x.data, torch.relu(x).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")
torch.relu(x).sum().backward() # 反向传播计算梯度
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()
7.1.4 Softmax函数
![图片[7]-第 7 章 用PyTorch进行深度学习-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-306.png)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END















请登录后查看评论内容