欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Pytorch 快速入门(二)Variable and Activation

程序员文章站 2022-07-13 13:22:50
...

Pytorch 中文文档

Pytorch官方文档(英文)

PyTorch是使用GPU和CPU优化的深度学习张量库。

 

 

Variable

    在 Torch 中的 Variable 就是一个存放会变化的值的地理位置. 里面的值会不停的变化. 就像一个裝鸡蛋的篮子, 鸡蛋数会不停变动. 那谁是里面的鸡蛋呢, 自然就是 Torch 的 Tensor. 如果用一个 Variable 进行计算, 那返回的也是一个同类型的 Variable.

先定义一个Variable:

Pytorch 快速入门(二)Variable and Activation

Variable 计算,梯度

对比一下 tensor 的计算和 variable 的计算.

Pytorch 快速入门(二)Variable and Activation

 

到目前为止, 我们看不出什么不同, 但是时刻记住, Variable 计算时, 它在背景幕布后面一步步默默地搭建着一个庞大的系统, 叫做计算图, computational graph. 这个图是用来干嘛的? 原来是将所有的计算步骤 (节点) 都连接起来, 最后进行误差反向传递的时候, 一次性将所有 variable 里面的修改幅度 (梯度) 都计算出来, 而 tensor 就没有这个能力啦.

v_out = torch.mean(variable*variable) 就是在计算图中添加的一个计算步骤, 计算误差反向传递的时候有他一份功劳, 我们就来举个例子:

Pytorch 快速入门(二)Variable and Activation

获取 Variable 里面的数据 

 

直接print(variable)只会输出 Variable 形式的数据, 在很多时候是用不了的(比如想要用 plt 画图), 所以我们要转换一下, 将它变成 tensor 形式.

Pytorch 快速入门(二)Variable and Activation

 

 

 

Activation :激励函数

一句话概括 Activation: 就是让神经网络可以描述非线性问题的步骤, 使神经网络变得更强大.

 

Torch 中的激励函数 

 

Torch 中的激励函数有很多, 不过我们平时要用到的就这几个. relusigmoidtanhsoftplus. 那我们就看看他们各自长什么样.

import torch
import torch.nn.functional as F # 激励函数都在这
from torch.autograd import Variable
 
import matplotlib.pyplot as plt
 
# 做一些假数据来观看图像
x = torch.linspace(-5,5,200) # x data (tensor),shape=(100,1)
x = Variable(x)
 
# 接着就是做生成不同都激励函数数据
 
x_np = x.data.numpy() # 换成nump array ,出图时用
 
# 几种常用的激励函数
y_relu = F.relu(x).data.numpy()
y_sigmoid = F.sigmoid(x).data.numpy()
y_tanh = F.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy()
 
# 下面开始作图,可视化
plt.figure(1,figsize=(8,6))
 
plt.subplot(221)
plt.plot(x_np,y_relu,c='red',label='relu')
plt.ylim((-1,5))
plt.legend(loc='best')
 
 
plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')
 
plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')
 
plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')
 
plt.show()

结果展示:

 

Pytorch 快速入门(二)Variable and Activation