pytorch深度学习:60分钟入门(translation)

cathy_mu cathy_mu     2022-09-25     785

关键词:

这是https://zhuanlan.zhihu.com/p/25572330的学习笔记。

 

  • Tensors

Tensors和numpy中的ndarrays较为相似, 因此Tensor也能够使用GPU来加速运算。

from __future__ import print_function
import torch
x = torch.Tensor(5, 3)  # 构造一个未初始化的5*3的矩阵
x = torch.rand(5, 3)  # 构造一个随机初始化的矩阵
x # 此处在notebook中输出x的值来查看具体的x内容
x.size()

#NOTE: torch.Size 事实上是一个tuple, 所以其支持相关的操作*
y = torch.rand(5, 3)

#此处 将两个同形矩阵相加有两种语法结构
x + y # 语法一
torch.add(x, y) # 语法二

# 另外输出tensor也有两种写法
result = torch.Tensor(5, 3) # 语法一
torch.add(x, y, out=result) # 语法二
y.add_(x) # 将y与x相加

# 特别注明:任何可以改变tensor内容的操作都会在方法名后加一个下划线‘_‘
# 例如:x.copy_(y), x.t_(), 这俩都会改变x的值。

#另外python中的切片操作也是资次的。
x[:,1] #这一操作会输出x矩阵的第二列的所有值

http://pytorch.org/docs/master/torch.html 

tensors的100+种用法。

 

  • CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA?是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

 

  • Numpy桥

    将Torch的Tensor和numpy的array相互转换简直就是洒洒水啦。注意Torch的Tensor和numpy的array会共享他们的存储空间,修改一个会导致另外的一个也被修改。

# 此处演示tensor和numpy数据结构的相互转换
a = torch.ones(5)
b = a.numpy()

# 此处演示当修改numpy数组之后,与之相关联的tensor也会相应的被修改
a.add_(1)
print(a)
print(b)

# 将numpy的Array转换为torch的Tensor
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)

# 另外除了CharTensor之外,所有的tensor都可以在CPU运算和GPU预算之间相互转换
# 使用CUDA函数来将Tensor移动到GPU上
# 当CUDA可用时会进行GPU的运算
if torch.cuda.is_available():
    x = x.cuda()
    y = y.cuda()
    x + y

 

PyTorch中的神经网络

接下来介绍pytorch中的神经网络部分。PyTorch中所有的神经网络都来自于autograd包

首先我们来简要的看一下,之后我们将训练我们第一个的神经网络。

Autograd: 自动求导

autograd 包提供Tensor所有操作的自动求导方法。
这是一个运行时定义的框架,这意味着你的反向传播是根据你代码运行的方式来定义的,因此每一轮迭代都可以各不相同。

以这些例子来讲,让我们用更简单的术语来看看这些特性。

  • autograd.Variable 这是这个包中最核心的类。 它包装了一个Tensor,并且几乎支持所有的定义在其上的操作。一旦完成了你的运算,你可以调用 .backward()来自动计算出所有的梯度。

你可以通过属性 .data 来访问原始的tensor,而关于这一Variable的梯度则集中于 .grad 属性中。

技术分享

  • 还有一个在自动求导中非常重要的类 Function。

Variable 和 Function 二者相互联系并且构建了一个描述整个运算过程的无环图。每个Variable拥有一个 .creator 属性,其引用了一个创建Variable的 Function。(除了用户创建的Variable其 creator 部分是 None)。

如果你想要进行求导计算,你可以在Variable上调用.backward()。 如果Variable是一个标量(例如它包含一个单元素数据),你无需对backward()指定任何参数,然而如果它有更多的元素,你需要指定一个和tensor的形状想匹配的grad_output参数。

 

from torch.autograd import Variable
x = Variable(torch.ones(2, 2), requires_grad = True)
y = x + 2
y.creator

# y 是作为一个操作的结果创建的因此y有一个creator 
z = y * y * 3
out = z.mean()

# 现在我们来使用反向传播
out.backward()

# out.backward()和操作out.backward(torch.Tensor([1.0]))是等价的
# 在此处输出 d(out)/dx
x.grad

 

最终得出的结果应该是一个全是4.5的矩阵。设置输出的变量为o。我们通过这一公式来计算:

技术分享技术分享技术分享,因此,技术分享,最后有技术分享

 

你可以使用自动求导来做许多疯狂的事情。

 

x = torch.randn(3)
x = Variable(x, requires_grad = True)
y = x * 2
while y.data.norm() < 1000:
    y = y * 2
gradients = torch.FloatTensor([0.1, 1.0, 0.0001])  //float是类型。
y.backward(gradients)  //这行什么意思
x.grad //这行呢?

 


pytorch深度学习60分钟快速入门part1:pytorch是什么?

 0x00PyTorch是什么?PyTorch是一个基于Python的科学计算工具包,它主要面向两种场景:用于替代NumPy,可以使用GPU的计算力一种深度学习研究平台,可以提供最大的灵活性和速度0x01开始学习1、TensorsTensors(张量)类似于numpy的ndar... 查看详情

pytorch深度学习60分钟快速入门part0:系列介绍

 说明:本系列教程翻译自PyTorch官方教程《DeepLearningwithPyTorch:A60MinuteBlitz》 教程目标在高层次上理解PyTorch的Tensor库和神经网络训练一个小型的神经网络来分类图像前提条件假设读者熟悉基础的NumPy库确保已经安装了torch和t... 查看详情

pytorch深度学习60分钟快速入门part3:神经网络

 神经网络可以通过使用torch.nn包来构建。既然你已经了解了autograd,而nn依赖于autograd来定义模型并对其求微分。一个nn.Module包含多个网络层,以及一个返回输出的方法forward(input)。例如,查看下图中的对数字图片分类的网络... 查看详情

pytorch60分钟入门教程:pytorch深度学习官方入门中文教程(代码片段)

什么是 PyTorch?PyTorch是一个基于Python的科学计算包,主要定位两类人群:NumPy的替代品,可以利用GPU的性能进行计算。深度学习研究平台拥有足够的灵活性和速度开始学习Tensors(张量)Tensors类似于NumPy的ndarrays,同时 Tensors可... 查看详情

pytorch深度学习60分钟快速入门part2:autograd自动化微分

 在PyTorch中,集中于所有神经网络的是autograd包。首先,我们简要地看一下此工具包,然后我们将训练第一个神经网络。autograd包为张量的所有操作提供了自动微分。它是一个运行式定义的框架,这意味着你的后向传播是由你... 查看详情

pytorch深度学习60分钟闪电战(代码片段)

https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html官方推荐的一篇教程Tensors#Constructa5x3matrix,uninitialized:x=torch.empty(5,3)#Constructarandomlyinitializedmatrix:x=torch.rand(5,3)#Constru 查看详情

pytorch学习笔记基础知识

PyTorch深度学习:60分钟入门(Translation) 查看详情

pytorch之人工智能学习路线

TyTorchhttp://pytorch.org/官网http://pytorch.org/tutorials/入门教程超简单!pytorch入门教程(一):Tensorhttp://www.jianshu.com/p/5ae644748f21PyTorch深度学习:60分钟入门(Translation)https://zhuanlan.zhihu.com/p/25572330Tensorsan 查看详情

pytorch60分钟入门教程:数据并行处理(代码片段)

...个教程中,我们将学习如何用DataParallel来使用多GPU。通过PyTorch使用多个GPU非常简单。你可以将模型放在一个GPU:device=torch.device("cuda:0")model.to(device)然后,你可以复制所有的张量到GPU:mytensor=my_te 查看详情

深度学习之30分钟快速入门pytorch(附学习资源推荐)(代码片段)

目录1、Pytorch简介1.0如何使用本教程1.1PyTorch由来1.2Torch简介1.3重新认识PyTorch1.4PyTorch和Tensorflow的对比1.5总结2、Pytorch环境搭建2.1安装Pytorch2.2配置JupyterNotebook2.3测试3、张量4、自动求导5、神经网络6、用cifar10训练一个分类器7、数据... 查看详情

小白入门深度学习|第四篇:配置pytorch环境

查看详情

深度学习理论与实战pytorch实现

课程目录:01.预备内容(入门)02.Python基础(入门)03.PyTorch基础(入门)04.神经网络(进阶)05.卷积神经网络(进阶)06.循环神经网络(进阶)07.生成对抗网络GAN(进阶)08.强化学习(进阶)09.毕业项目 下载地址:深度学习理... 查看详情

深度学习---从入门到放弃pytorch基础(代码片段)

深度学习—从入门到放弃(一)pytorchTensor类似于numpy的array,pandas的dataframe;在pytorch里的数据结构是tensor,即张量tensor简单操作1.Flattenandreshape###Originalz:tensor([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]])Flatte 查看详情

pytorch入门与实战----pytorch入门(代码片段)

1.深度学习框架 pytorch与其他框架的比较pytorch的学习方法:课程安排:PyTorch是一个基于Python的科学计算库,它有以下特点:类似于NumPy,但是它可以使用GPU可以用它定义深度学习模型,可以灵活地进行深度学习模型的训练和使... 查看详情

如何高效入门pytorch?深度学习框架是pytorch还是tensorflow?(代码片段)

PyTorch入门,着实入了不少坑。咱们来谈谈,如何选个合适的教程,避开它们。一、Tensorflow VS  PyTorch    在这之前,有一个问题肯定困惑大家很久了,2021年了,TensorFlow和PyTorch两个深度学习框架学哪个... 查看详情

深度学习为什么选择pytorch?史上最详细pytorch入门教程(代码片段)

目录前言一、Pytorch介绍1.常见的深度学习框架2.Pytorch框架的崛起3.Pytorch与Tensorflow多方位比较二、Tensors1.Tensor的创建2.Tensor的操作3.Tensor与Numpy三、Autograd的讲解1.模型中的前向传播与反向传播2.利用autograd计算梯度四、构建神经网络... 查看详情

对比学习:《深度学习之pytorch》《pytorch深度学习实战》+代码

PyTorch是一个基于Python的深度学习平台,该平台简单易用上手快,从计算机视觉、自然语言处理再到强化学习,PyTorch的功能强大,支持PyTorch的工具包有用于自然语言处理的AllenNLP,用于概率图模型的Pyro,扩展了PyTorch的功能。通... 查看详情

神经网络与深度学习pytorch入门——张量(代码片段)

...通过参考飞桨AIStudio-人工智能学习与实训社区 教程进行pytorch相关学习。目录一.概念:张量、算子二.使用pytorch实现张量运算1.2.1创建张量1.2.1.1指定数据创建张量1.2.1.2指定形状创建1.2.1.3指定区间创建1.2.2张量的属性1.2.2.1张... 查看详情