pytorch深度学习框架—torch.nn模块(二)
激活函数
pytorch中提供了十几种激活函数,常见的激活函数通常为S形激活函数(Sigmoid)双曲正切激活函数(Tanh) 和线性修正单元(ReLu)激活函数等
层对应的类 | 功能 |
---|---|
torch.nn.Sigmoid | 激活函数 |
torch.nn. Tanh | 激活函数 |
torch.nn.ReLu | 激活函数 |
torch.nn.Sigmoid激活函数也叫logistics激活韩式计算公式为:
torch.nn. Tanh双曲正切函数的公式:
torch.nn.ReLu激活函数的计算公式为:
可视化激活函数
下面使用pytorch结合matplotlib可视化激活函数
Sigmoid激活函数
# 激活函数可视化
x = torch.linspace(-6,6,100)
sigmoid = nn.Sigmoid()
ysigmoid = sigmoid(x)
plt.figure(figsize=(14,3))
plt.subplot(1,4,1)
plt.plot(x.data.numpy(),ysigmoid.data.numpy(),"r-")
plt.title("Sigmoid")
plt.grid()
plt.show()
Tanh激活函数
# 激活函数可视化
x = torch.linspace(-6,6,100)
tanh = nn.Tanh()
ytanh = tanh(x)
plt.figure(figsize=(14,3))
plt.subplot(1,4,1)
plt.plot(x.data.numpy(),ytanh.data.numpy(),"r-")
plt.title("Tanh")
plt.grid()
plt.show()
ReLu激活函数
# 激活函数可视化
x = torch.linspace(-6,6,100)
relu = nn.ReLU()
yrelu = relu(x)
plt.figure(figsize=(14,3))
plt.subplot(1,4,1)
plt.plot(x.data.numpy(),yrelu.data.numpy(),"r-")
plt.title("RELU")
plt.grid()
plt.show()
对于整个torch.nn模块下的激活函数部分介绍完成
循环层
pytorch中提供了三种循环层的实现,如图表所示
层对应的类 | 功能 |
---|---|
torch.nn.RNN | 多层RNN单元 |
torch.nn.RNN | 多层长短期记忆LSTM单元 |
torch.nn.GRU | 多层门限循环GRU单元 |
torch.nn.RNN()输入一个多层的Elaman Rnn进行学习
下面以torch.nn.RNN()为例介绍循环层的参数、输入、输出
参数说明如下
- input_size:输入x的特征数量
- hidden_size隐层的特征数量
- num_layers:RNN网络的层数
- nonlinearity:指定非线性函数使用Tanh还是ReLu默认tanh
- bias:默认为True 如果为False则不会使用偏置权重
- batch_first:
- dropout:如果值非0则除了最后一层以外,其他的RNN层的输出都会套上一个dropout层默认为0。