【Datawhale 组队学习Pytorch】Task01 Pytorch安装和基础知识

【项目简介】

        PyTorch是利用深度学习进行数据科学研究的重要工具,在灵活性、可读性和性能上都具备相当的优势,近年来已成为学术界实现深度学习算法最常用的框架。考虑到PyTorch的学习兼具理论储备和动手训练,两手都要抓两手都要硬的特点,我们开发了 《深入浅出PyTorch》课程,期望以组队学习的形式,帮助大家从入门到熟练掌握PyTorch工具,进而实现自己的深度学习算法。学习的先修要求是,会使用Python编程,了解包括神经网络在内的机器学习算法,勤于动手实践。

        我们的愿景是:通过组队学习,大家能够掌握由浅入深地PyTorch的基本知识和内容,经过自己的动手实践加深操作的熟练度。同时通过项目实战,充分锻炼编程能力,掌握PyTorch进行深度学习的基本流程,提升解决实际问题的能力。

        

【教程地址】
在线教程链接:https://datawhalechina.github.io/thorough-pytorch/
Github在线教程:https://github.com/datawhalechina/thorough-pytorch
Gitee在线教程:https://gitee.com/datawhalechina/thorough-pytorch 
b站视频:https://www.bilibili.com/video/BV1L44y1472Z


目录

PyTorch基础知识复习

张量 - 现代机器学习的基础(类似多维数组)

创建张量

 张量的操作

广播机制 (理解为复制机制)

        自动求导

        并行计算


之前学过一遍课程,没有安装好jupyter notebook和pytorch实操,这次重点实践练习,

Task01课程笔记链接如下: ​​​​http://t.csdn.cn/uEw0c

从上次出bug的检验是否安装完成开始

进入所在的虚拟环境,紧接着输入python,在输入下面的代码。

import torch

torch.cuda.is_available()
>>>False

这条命令意思是检验是否可以调用cuda,如果我们安装的是CPU版本的话会返回False,能够调用GPU的会返回True。一般这个命令不报错的话就证明安装成功。

f27d856ba21248ce94e71fcfeb7471c4.png

检验成功


PyTorch基础知识复习

Pytorch简介

  • pytorch是由Facebook开发
  • 利用深度学习进行科学研究的重要工具
  • 学术界最常用的深度学习框架
  • 简洁、高效、扩展性好

张量 - 现代机器学习的基础(类似多维数组)

它的核心是一个数据容器,多数情况下,它包含数字,有时候它也包含字符串,但这种情况比较少。因此可以把它想象成一个数字的水桶。

这里有一些存储在各种类型张量的公用数据集类型:

  • 3维 = 时间序列

  • 4维 = 图像

  • 5维 = 视频

创建张量

几种常见的创建tensor的方法

随机初始化矩阵

通过torch.rand()的方法,构造一个随机初始化的矩阵

torch.randn_like可转换为随机矩阵

import torch
x = torch.rand(4, 3) 
print(x)

3a84483ab2d14fdb9aa608d3ba0c2848.png

全0矩阵的构建

通过torch.zeros()构造一个矩阵全为 0,并且通过dtype设置数据类型为 long。除此以外,我们还可以通过torch.zero_()和torch.zeros_like()将现有矩阵转换为全0矩阵.

2ad50edae1b5416095c0832c201fc0b0.png

27a0b0031c654584b38d7b7bb7b6973f.png

全1矩阵的构建8f49c234c3ee4573a2c3d11e2f6a3606.png

通过torch.tensor()直接使用数据,构造一个张量:

e362f399721145a490a21fbbc5bcee99.png118d6ab282ba4c7d94f4f510f7298fbe.png

基于已经存在的 tensor,创建一个 tensor :

c5895581a7804075b82c8682d2f0e1c3.png

常见的构造Tensor的方法:

函数

功能

Tensor(sizes)

基础构造函数

tensor(data)

类似于np.array

ones(sizes)

全1

zeros(sizes)

全0

eye(sizes)

对角为1,其余为0

arange(s,e,step)

从s到e,步长为step

linspace(s,e,steps)

从s到e,均匀分成step份

rand/randn(sizes)

rand是[0,1)均匀分布;randn是服从N(0,1)的正态分布

normal(mean,std)

正态分布(均值为mean,标准差是std)

randperm(m)

随机排列

 张量的操作

加法操作071ef3ca01a8490cb85e64d1b80db030.png

索引操作:(类似于numpy)

需要注意的是:索引出来的结果与原数据共享内存,修改一个,另一个会跟着修改。如果不想修改,可以考虑使用copy()等方法

b7a1ee4268f54063aa90677bebc09466.png

1c983949571648c09b637348620760a7.png

025a7f38710340498e3742eb642dc9a0.png

维度变换

张量的维度变换常见的方法有torch.view()torch.reshape(),下面我们将介绍第一中方法torch.view()

注: torch.view() 返回的新tensor与源tensor共享内存(其实是同一个tensor),更改其中的一个,另外一个也会跟着改变。(顾名思义,view()仅仅是改变了对这个张量的观察角度)

torch.view()会改变原始张量,但是很多情况下,我们希望原始张量和变换后的张量互相不影响。为为了使创建的张量和原始张量不共享内存,我们需要使用第二种方法torch.reshape(), 同样可以改变张量的形状,但是此函数并不能保证返回的是其拷贝值,所以官方不推荐使用。推荐的方法是我们先用 clone() 创造一个张量副本然后再使用 torch.view()进行函数维度变换 。------>右侧实现

df1c60286ddd4535a832b7b89cc7285d.png82f406815628450abeb44116c3aeb35f.png

PyTorch中的 Tensor 支持超过一百种操作,包括转置、索引、切片、数学运算、线性代数、随机数等等,具体使用方法可参考官方文档

广播机制 (理解为复制机制)

当对两个形状不同的 Tensor 按元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个 Tensor 形状相同后再按元素运算。

 d72d9e929d5a4ebba60dadf7935b0928.png

【拓展】

arange函数 

arange()函数有四个个参数,分别是start(开始值)、stop(终值)、step(步长)和dtype(数组类型)。

(1)

start:开始值
参数类型:可选
默认值:0
是否包含在结果数组中:是

(2)

stop:终值
参数类型:必选
是否包含在结果数组中:否

(3)

step:步长

参数类型:可选
默认值:1

(4)

dtype:数组类型

参数类型:可选

自动求导

PyTorch 中,所有神经网络的核心是 autograd 包。autograd包为张量上的所有操作提供了自动求导机制。它是一个在运行时定义 ( define-by-run )的框架,这意味着反向传播是根据代码如何运行来决定的,并且每次迭代可以是不同的。

并行计算

 在利用PyTorch做深度学习的过程中,可能会遇到数据量较大无法在单块GPU上完成,或者需要提升计算速度的场景,这时就需要用到并行计算。

这两部分内容还需要多多研究下,上次做过笔记就不赘述了。

课程笔记链接: ​​​​http://t.csdn.cn/uEw0c

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值