PyTorch入门

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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值