PyTorch深度学习
·
PyTorch中已经实现了神经网络中可能用到的各种激活函数,我们在代码中只要直接调用即可。至于激活函数的基本公式和原理查看相关历史文章https://blog.csdn.net/weixin_65875490/article/details/157329671?spm=1011.2124.3001.6209
https://blog.csdn.net/weixin_65875490/article/details/157329671?spm=1011.2124.3001.6209
一、Sigmoid函数
函数和其导数图像相关代码:
import torch
import matplotlib.pyplot as plt
x = torch.linspace(-10,10,100,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") #绘制sigmoid曲线
ax[0].set_title("sigmoid") #设置标题
ax[0].spines['top'].set_visible(False) #隐藏上边界
ax[0].spines['right'].set_visible(False) #隐藏右边界
ax[0].axhline(0.5,color="gray",alpha = 0.7,linewidth=1) #绘制水平线,颜色为灰色,透明度为0.7,线宽为1
ax[0].axhline(1,color="gray",alpha = 0.7,linewidth=1) #绘制水平线,颜色为灰色,透明度为0.7,线宽为1
torch.sigmoid(x).sum().backward() #反向传播
ax[1].plot(x.data,x.grad.data,"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') #设置y轴位置
ax[1].spines['bottom'].set_position('zero') #设置x轴位置
ax[1].set_ylim(0,0.3) #设置y轴范围
plt.show()

二、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") #绘制ReLU曲线
ax[0].set_title("ReLU") #设置标题
ax[0].spines['top'].set_visible(False) #隐藏上边界
ax[0].spines['right'].set_visible(False) #隐藏右边界
ax[0].spines['left'].set_position('zero') #设置y轴位置
ax[0].spines['bottom'].set_position('zero') #设置x轴位置
torch.relu(x).sum().backward() #反向传播
ax[1].plot(x.data,x.grad.data,"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') #设置y轴位置
ax[1].spines['bottom'].set_position('zero') #设置x轴位置
plt.show()

三、Softmax函数等
更多推荐
所有评论(0)