pytroch基础使用

深度学习模型

回归问题(线性回归、逻辑回归);分类问题
神经网络:SNN、 ANN、 **CNN、RNN、LSTM、GRU **…
拓展的模型:Seq2Seq with Attention、TCN、DBN

用pyTroch构建模型框架

1、主流的工具

pyTroch:动态计算图——通俗易懂,接近原生python代码
Tensorflow:静态计算图

2、应用

图像——分类ResNet、识别;自然语言处理——翻译、情感分析、问答系统GPT2

3、 构建模型

输入——> 模型(架构+超参数)——> 输出

一、入门

一、tensor张量

tensors类似于Numpy的ndarrays,可以使用GPU进行计算

构造一个5*3的矩阵,不进行初始化
x=torch.empty(5,3)   #随机数填充,没有大小范围
构造一个随机初始化的矩阵
 x = torch.rand(5, 3)
构造一个矩阵全为 0,而且指定数据类型
 x = torch.zeros(5, 3, dtype=torch.long)
构造一个张量,直接使用数据
 x = torch.tensor([5.5, 3])
创建一个 tensor 基于已经存在的 tensor
 x = x.new_ones(5, 3, dtype=torch.double)  #.new_ones重用原来的信息x = torch.randn_like(x, dtype=torch.float)  #随机产生一个跟上一个向量形状相同的向量
获得tensor的维度
x.size()  或者 x.shape()

二、简单运算

1、加法
x = torch.rand(5, 3)
y = torch.rand(5, 3)
1、z = x+y)    #z = 两个tensor相加,其 形状与x、y相同
2、z = torch.add(x,y)
3、y.add_(x)   #会把相加的结果保存在y
note:任何的in_place运算都是以下划线结尾,如 x.copy_(y)  会将结果放于x上
2、改变大小

改变大小:如果想改变一个 tensor 的大小或者形状,可以使用 torch.view

x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8)  # 必须可以整除
3、获取value

如果有一个元素 tensor ,使用 .item() 来获得这个 value

x = torch.randn(1)
print(x.item())  #获得数值 而不是tensor
4、numpy和pytorch的转换

1、将tensor转换成array:

a = torch.ones(5)    # tensor([1,1,1,1,1])
b = a.numpy()    # 将tensor a转换成了:array([1,1,1,1,1])

2、改变b的某一个值

b[1] = 9    # array([1,9,1,1,1])
print(a)    # tensor([1,9,1,1,1])   把a的值也改变了
note:Torch tensor和Numpy array之间共享内存,因此改变其中一项也会改变另一项

3、将numpy array转换成 torch tensor

a = np.ones(5)  # a: array([1,1,1,1,1])
b = torch.from_numpy(a)  # b: tensor([1,1,1,1,1])
5、CUDA Tensor

使用.to方法,Tensor可以被移动到别的device上

if torch.cuda.is_available():device = torch.device("cuda")y = torch.ones_like(x,device = device)x = x..to(device)z = x + yprint(z.to("cpu", torch.double))    #从GPU转到cpu
若是个GPU tensor ,则不能直接转成array,要先移动到cpu   numpy只能在cpu上计算
y.to("cpu").data.numpy()

三、实现两层神经网络

全连接的ReLU神经网络,一个隐藏层,没有bias;用来从x预测y,使用L2 Loss
这一实现完全使用numpy来计算前向神经网络 loss 和反向传播——forward pass – loss – backward pass

# 使用numpy
#定义一下参数:
N, D_in, H,D_out  = 64, 1000, 10, 10
#随机创建训练数据
x = np.random.randn(N, D_in)
x = np.random.randn(N, D_out)
w1 =  np.random.randn(D_in, H)
w2 =  np.random.randn(H,D_out)
#设置学习率
learing_rate = le-6
for t in range(500):
#forward passh = x.dot(w1)  # N*Hh_relu = np.maximum(h,0)  # N*Hy_pred = h_relu.dot(w2)   # N*D_out
#lossloss = np.square(y_pred - y).sum()print(t,loss)
#backward pass  求导grad_y_pred = 2.0 * ( y_pred - y)grad_w2 = h_relu.T.dot(grad_y_pred)grad_h_relu = grad_y_pred.dot(w2.T)grad_h = grad_h_relu.copy()grad_h[h<0] = 0grad_w1 = x.T.dot(grad_h)
#更新weightsw1 -= learning_rate * grad_w1w2 -= learning_rate *grad_w2
// 使用pyTorch  只是一些运算的方法不同
#定义一下参数:
N = 64
D_in = 1000
H = 10
D_out = 10
#随机创建训练数据
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)
w1 = torch.randn(D_in, H)
w2 = torch.randn(H,D_out)
#设置学习率
learning_rate = 1e-6
for t in range(500):
#forward passh = x.mm(w1)  # N*Hh_relu = h.clamp(min=0)  # N*Hy_pred = h_relu.mm(w2)   # N*D_out
#lossloss =(y_pred - y).pow(2).sum().item()print(t,loss)
#backward pass  求导grad_y_pred = 2.0 * ( y_pred - y)grad_w2 = h_relu.t().mm(grad_y_pred)grad_h_relu = grad_y_pred.mm(w2.T)grad_h = grad_h_relu.clone()grad_h[h<0] = 0grad_w1 = x.t().mm(grad_h)
#更新weightsw1 -= learning_rate * grad_w1w2 -= learning_rate *grad_w2
pytorch简单的antograd功能
x = torch.tensor(1. , requires_grad= True)
w = torch.tensor(2. , requires_grad= True)
b = torch.tensor(3. , requires_grad= True)
y = w*x + b  # == loss
y.backward()   #自动计算所有梯度
print(y.grad, w.grad, x.grad, b.grad)
# out: None tensor(1.) tensor(2.) tensor(1.)
#精简代码
N, D_in, H,D_out  = 64, 1000, 10, 10
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)
w1 = torch.randn(D_in, H, requires_grad=True)
w2 = torch.randn(H,D_out, requires_grad=True)
#设置学习率
learning_rate = 1e-6
for t in range(10):
#forward passy_pred = x.mm(w1).clamp(min=0).mm(w2)
#lossloss =(y_pred - y).pow(2).sum()loss.backward()print(loss, w1.grad, w2.grad)with torch.no_grad():w1 -= learning_rate * w1.gradw2 -= learning_rate * w2.gradw1.grad.zero_()w2.grad.zero_()

之后介绍使用torch.nn神经网络

pytroch教程(一)相关推荐

  1. pytorch tensor查找0_Pytorch简单教程

    2019 年,ML 框架之争只剩两个实力玩家:PyTorch 和 TensorFlow.研究者大批涌向 PyTorch,而业界的首选仍然是 TensorFlow. Pytorch和TensorFlow ...

  2. PyTorch官方权威教程书来了,LeCun力荐!意外的通俗易懂

    点击我爱计算机视觉标星,更快获取CVML新技术 机器之心报道 参与:一鸣.泽南 PyTorch 无疑是当今最火热的深度学习框架之一.自 2016 年诞生以来,PyTorch 已发展成一个非常繁荣的开发 ...

  3. 转g代码教程_图深度学习入门教程(九)——图滤波神经网络模型

    本教程是一个系列免费教程,争取每月更新2到4篇.(由于精力有限,近期停止了一段时间,在此向大家道个歉). 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神经网络等相关 ...

  4. Python安装Pytorch教程(图文详解)

    最近人工智能等多门课需要复现论文,近两年的论文很多都是Pytorch环境,所以,这里总结一下Pytorch的安装教程,做好最快.最简单.最好地完成安装. 本机环境 Win10+1050Ti+Pytho ...

  5. 超大模型分布式训练DeepSpeed教程

    DeepSpeed教程 项目链接 简介 deep speed是微软的新大规模模型分布式训练的工具.专门为训练超大模型而生.号称可以训练10B参数的模型.比目前最好的模型大10倍,训练速度块10倍.兼容 ...

  6. 最新版YOLOv5 6.1使用教程

    文章目录 前言 一.环境 1.安装anaconda 2.创建虚拟环境 3.安装pytorch 二.加载yolov5 6.1项目 1.克隆仓库 2.安装其他包 2.安装相关依赖包 3.测试项目 三.训练 ...

  7. 图深度学习入门教程(六)——注意力机制与图注意力

    深度学习还没学完,怎么图深度学习又来了?别怕,这里有份系统教程,可以将0基础的你直接送到图深度学习.还会定期更新哦. 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神 ...

  8. 判断深度学习模型的稳定性_图深度学习连载八,入门教程之简化图卷积模型

    本教程是一个系列免费教程,争取每月更新2到4篇. 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神经网络等相关内容.该教程由代码医生工作室出版的全部书籍混编节选而成. ...

  9. 图深度学习连载八,入门教程之简化图卷积模型

    本教程是一个系列免费教程,争取每月更新2到4篇. 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神经网络等相关内容.该教程由代码医生工作室出版的全部书籍混编节选而成. ...

  10. Pytorch环境详细安装教程【Win10+CUDA升级11.6+cudNN+Anaconda3虚拟环境+pycharm】

    Pytorch环境详细安装教程 一.安装环境 二.CUDA升级 1.更新NVIDIA显卡驱动 (1)查看自己的CUDA驱动和运行版本 (2)更新CUDA驱动 2.升级CUDA运行版本 (1)查看可用的 ...

最新文章

  1. PHP中添加HTML代码的三种方法(printEND)
  2. 序数是什么意思_序数与基数
  3. Eclipse添加Spket插件实现ExtJs智能提示
  4. docker运行我们的容器
  5. php不发送referer,php – 注意:未定义的索引:HTTP_REFERER
  6. 【转载】他是个残疾人 mynote V1.01发布
  7. LSTM VS RNN改进
  8. 修改phpMyAdmin使其能够管理多台远程MySQL服务器
  9. AI算法工程师 | 01人工智能基础-快速入门
  10. (转)wincap抓包原理
  11. 咚咚咚————【封装驱动】ADS1256驱动程序,分享交流自己编写的程序。
  12. 软件随想录(local.joelonsoftware.com/wiki)-2001年04月21日 别让架构太空人吓到你 - Don't Let Architecture Astronauts Scar
  13. 糗事百科成人版段子爬虫实战
  14. Java Swing 键盘事件监听
  15. [原]我和她同居的日子 一
  16. Leetcode77 组合
  17. Multisim仿真—恒流源电路(一)
  18. mfp 服务器控制中心,云平台管理中心
  19. ‘cnpm‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
  20. cube ui RecycleList 不自动追加数据

热门文章

  1. Windows自带的远程协助工具(非远程桌面,类比QQ远程桌面)
  2. 阿里云Landing Zone系列--1云治理中心使用
  3. 工商银行销售基金一览表
  4. mysql存储过程转义字符_mysql存储过程转义字符
  5. Vue中native的用法
  6. python列表的操作
  7. 云编程和软件环境 、物联网的关键技术
  8. SpringBoot整合jersey
  9. Ubuntu配置拼音和五笔输入法
  10. Linux服务器CPU飙升排查