1、pytorch入门

介绍

Pytorch是一款facebook发布的深度学生框架,由其易用性,友好性,深受广大用户青睐

安装

在这里插入图片描述

张量Tensor

创建张量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

张量的属性

在这里插入图片描述
在这里插入图片描述
tensor常见数据类型
在这里插入图片描述
在这里插入图片描述

常见方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

CUDA Tensor

在这里插入图片描述
在这里插入图片描述

常用数学运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自动求导

前向计算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

梯度计算

在这里插入图片描述
在这里插入图片描述

案例:Pytorch完成线性回归

在这里插入图片描述

import torch
import numpy as np
import matplotlib.pyplot as plt
x = torch.rand([50])
y = 3*x+0.8

w = torch.rand(1,requires_grad=True)
b = torch.rand(1,requires_grad=True)
def loss_fn(y,y_predict):
    loss = (y_predict - y).pow(2).mean()
    for i in [w,b]:
        if i.grad is not None:
            i.grad.data.zero_()
    loss.backward()
    return loss.data
def optimize(lr):
    w.data -= lr * w.grad.data
    b.data -= lr * b.grad.data
for i in range(3000):
    y_predict = x*w+b
    loss = loss_fn(y,y_predict)
    if i%200 == 0:
        print(i,loss)
    optimize(0.01)
predict = x*w+b
plt.scatter(x.data.numpy(),y.data.numpy(),c='r')
plt.plot(x.data.numpy(),predict.data.numpy())
plt.show()

在这里插入图片描述

Pytorch基础模型组件

nn.Module

在这里插入图片描述
在这里插入图片描述

nn.Sequential

在这里插入图片描述

优化器

在这里插入图片描述

损失函数

在这里插入图片描述

案例:线性回归

在这里插入图片描述

import torch
import torch.optim as optim
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
x = torch.rand([50,1])
y = 3*x+0.8
class Lr(nn.Module):
    def __init__(self):
        super(Lr,self).__init__()
        self.linear = nn.Linear(1,1)
        
    def forward(self,x):
        out = self.linear(x)
        return out
model = Lr()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(),lr=1e-3)

for i in range(30000):
    out = model(x)
    loss = criterion(y,out)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if (i+1)%1000 == 0:
        print("Epch{}/{},Loss{:.6f}".format(i,5000,loss.data))
model.eval()
predict = model(x)
output = predict.data.numpy()
plt.scatter(x.data.numpy(),y.data.numpy(),c='r')
plt.plot(x.data.numpy(),output)
plt.show()

在这里插入图片描述

在这里插入图片描述

GPU运行代码

在这里插入图片描述
在这里插入图片描述

案例修改

import torch
import torch.optim as optim
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
x = torch.rand([50,1])
y = 3*x+0.8
class Lr(nn.Module):
    def __init__(self):
        super(Lr,self).__init__()
        self.linear = nn.Linear(1,1)
        
    def forward(self,x):
        out = self.linear(x)
        return out
x = x.to(device)
y = y.to(device)

model = Lr().to(device)

criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(),lr=1e-3)
for i in range(30000):
    out = model(x)
    loss = criterion(y,out)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if (i+1)%1000 == 0:
        print("Epch{}/{},Loss{:.6f}".format(i,5000,loss.data))
model.eval()
predict = model(x)
output = predict.cpu().detach().numpy()

plt.scatter(x.cpu().data.numpy(),y.cpu().data.numpy(),c='r')

plt.plot(x.cpu().data.numpy(),output)

plt.show()

在这里插入图片描述

常见优化算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

避免过拟合/加速训练

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值