PyTorch 激励函数 Sigmoid ReLU Tanh

PyTorch 激励函数 Sigmoid ReLU Tanh

一、Sigmoid ReLU Tanh 定义

1、Sigmoid。Sigmoid函数也叫Logistic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。

import torch
import matplotlib
import matplotlib.pyplot as plt
import math

plt.figure(figsize=(15,8))
# 指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
# 解决负号'-'显示为方块的问题
matplotlib.rcParams['axes.unicode_minus'] = False

ax = plt.gca() # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none') 
ax.spines['top'].set_color('none') # 将右边上边的两条边颜色设置为空 其实就相当于抹掉这两条边
ax.xaxis.set_ticks_position('bottom')   
ax.yaxis.set_ticks_position('left') # 指定下边的边作为 x 轴 指定左边的边为 y 轴
ax.spines['bottom'].set_position(('data', 0)) # 指定data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
x = torch.linspace(-10, 10, 1000)
xx = 1/(1 + math.e**(-x))

# 函数图像
# Plot 返回一个 Line2D 对象列表,例如:line1, line2 = plot(x1, y1, x2, y2)。
# 在下面的代码中,假设只有一行,所以返回的列表长度为 1。使用元组拆分行,以获得该列表的第一个元素.
# line, =plt.plot(x, y, '-')
line1, = plt.plot(x.numpy(),xx.numpy())
#print(line1)
# 导数图像
line2, = plt.plot(x.numpy(),(xx*(1-xx)).numpy(),"--")

plt.legend(handles=[line1, line2],labels = ["函数图像","导数图像"])
plt.show()

 

2、Tanh。

import torch
import matplotlib
import matplotlib.pyplot as plt
import math

plt.figure(figsize=(15,8))
# 指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
# 解决负号'-'显示为方块的问题
matplotlib.rcParams['axes.unicode_minus'] = False

ax = plt.gca() # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none') 
ax.spines['top'].set_color('none') # 将右边上边的两条边颜色设置为空 其实就相当于抹掉这两条边
ax.xaxis.set_ticks_position('bottom')   
ax.yaxis.set_ticks_position('left') # 指定下边的边作为 x 轴 指定左边的边为 y 轴
ax.spines['bottom'].set_position(('data', 0)) #指定data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))

x = torch.linspace(-10, 10, 1000)
xx = (math.e**x-math.e**-x)/(math.e**x+math.e**(-x))
# 函数图像
line1, = plt.plot(x.numpy(),xx.numpy())
# 导数图像
line2, = plt.plot(x.numpy(),(1-xx**2).numpy(),"--")
plt.legend(handles=[line1, line2],labels = ["函数图像","导数图像"])
plt.show()

3、ReLU。

import torch
import matplotlib
import matplotlib.pyplot as plt
import math

plt.figure(figsize=(15,8))

# 指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
# 解决负号'-'显示为方块的问题
matplotlib.rcParams['axes.unicode_minus'] = False
ax = plt.gca() # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none') 
ax.spines['top'].set_color('none') # 将右边上边的两条边颜色设置为空 其实就相当于抹掉这两条边
ax.xaxis.set_ticks_position('bottom')   
ax.yaxis.set_ticks_position('left') # 指定下边的边作为 x 轴 指定左边的边为 y 轴
ax.spines['bottom'].set_position(('data', 0)) # 指定data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
x = torch.linspace(-10,10,5000)
xx = torch.max(torch.Tensor([0]),x)

# 函数图像
line1, = plt.plot(x.numpy(),xx.numpy())
plt.legend(handles=[line1,],labels = ["函数图像"])
plt.show()

二、Pytorch 内置 sigmoid、relu、tanh的应用

1、sigmoid。

import torch

a = torch.Tensor([-1,0,1])
print(a)
print(torch.sigmoid(a))
print(a.sigmoid())
tensor([-1.,  0.,  1.])
tensor([0.2689, 0.5000, 0.7311])
tensor([0.2689, 0.5000, 0.7311])

2、relu。

import torch
a = torch.Tensor([-1,0,1])
print(a)
print(torch.relu(a))
print(a.relu())
tensor([-1.,  0.,  1.])
tensor([0., 0., 1.])
tensor([0., 0., 1.])

3、tanh。

import torch

a = torch.Tensor([-1,0,1])
print(a)
print(torch.tanh(a))
print(a.tanh())
tensor([-1.,  0.,  1.])
tensor([0.2689, 0.5000, 0.7311])
tensor([0.2689, 0.5000, 0.7311])

发表回复

您的电子邮箱地址不会被公开。