PyTorch快速入门
1.安装Pytorch
https://pytorch.org/get-started/locally/
2.Pytorch和Numpy
# 引入torch模块(这就是我们的pytorch) import torch import numpy # 创建一个Tensor torch_data = torch.Tensor([1,2,3]) # Torch ---> array np_data = torch_data.numpy() # array ---> Torch torch_data = torch.from_numpy(np_array) # 求绝对值 torch.abs(torch_data) # 创建一个全为1的矩阵 torch.ones((2,2))
3 激活函数
-
没有激活函数,我们的神经网络就永远只能处理线性问题,对于非线性问题,我们需要激活函数,来让我们的神经网络更好的处理非线性问题。
-
从torch.nn.function中引用 很多的激活函数都可以从中引用,但有也有一小部分常用的需要我们从torch中引用
import torch.nn.functional as F import torch # 引用方法 torch.rule() F.sigmoid() F.tanh() F.softplus()
4.误差反向传播
误差反向传播,是神经网络中的一个重要的功能,让我们不断更新我们神经元的权重,从而使我们的神经网络不断优化
import torch from torch.autograd import Variable x = torch.Tensor([[1,2],[3,4]]) # 开启反向传播的功能 x.requires_grad=True y = torch.mean(x*x) # v^2 # 进行误差反向传播 y.backward() # 查看误差 print(x.grad)
OUT
tensor([[0.5000, 1.0000], [1.5000, 2.0000]])
5.搭建一个简单的神经网络
import torch import torch.nn.functional as F import numpy as np class Net(torch.nn.Module): def __init__(self , n_feature , n_hidden , n_output): super(Net ,self).__init__() #调用父类 ##隐含层 self.hidden = torch.nn.Linear( n_feature , n_hidden) ##输入层 self.predict = torch.nn.Linear(n_hidden , n_output) def forward(self , x): #在隐藏层和输入层之间 加上激活函数 x = F.relu(self.hidden(x)) x = self.predict(x) return x ##一个输入神经元 10 个隐藏神经元 1个输出神经元 net = Net( 1,10 ,1) ##打印这个神经网路 print(net)
-
快速定义我们的神经网路的方法
net2 = torch.nn.Sequential( torch.nn.Linear(1,10), torch.nn.ReLU(), torch.nn.Linear(10,1) ) print(net2) # 和第一个的结果是一样的
OUT
Sequential( (0): Linear(in_features=1, out_features=10, bias=True) (1): ReLU() (2): Linear(in_features=10, out_features=1, bias=True) )
6.优化器与误差函数
-
损失函数 (通过计算损失,来让我门优化我们的神经网路)
-
选 均方差 做误差函数
loss_func = torch.nn.MSELoss() # 对于分类的任务 使用交叉熵作为误差函数会更好一些 loss_func = CrossEntropyLoss()
优化器
# 随机梯度下降的优化器 # Net是我们上节的神经网络 # Net.parameters() 是我们的神经网络的参数 net_SGD = Net() # 里面的的参数是: 我们神经网络的参数,和学习率,学习率,是我们更新参数的幅度 torch.optim.SGD(net_SGD.parameters(),lr=0.01)
学习率 大 | 学习率 小 | |
---|---|---|
收敛速度 | 快 | 慢 |
缺点 | 容易在最优点震荡 | 容易过拟合 |
链接:https://morvanzhou.github.io/tutorials/machine-learning/torch/