pytorch打印模型参数_学习 I 使用PyTorch的5个基本功能开始深度学习

导读 

对深度学习的需求不断增长。越来越多的科学家和开发人员加入了深度学习的行列。

假设你已经开始了你的深度学习之旅,并且已经在人工神经网络上玩了一段时间。或者,你只是想开始。不管是哪种情况,你都会发现自己有点左右为难。你已经读过各种深度学习框架,也许有两个非常突出。两个最受欢迎的深度学习库:

Tensorflow和PyTorch。你不知道到底有什么区别。

1dbbed05dd4a2e5a352bc495502a2bbb.gif

www.arkai.net

01

Tensorflow 和 Pytorch的比较

76872d2023cb5752e8c2439e130caf68.png

你不知道到底有什么区别。别担心!这里是想帮你弄清楚Tensorflow和PyTorch。

第1点:

虽然Tensorflow和PyTorch都是开源的,但它们是由两个不同的向导创建的。Tensorflow基于Theano,由Google开发,而Pythorch基于Torch,由Facebook开发。

第2点:

两者之间最重要的区别是这些框架定义计算图的方式。当Tensorflow创建静态图时,Pythorch相信动态图。这是什么意思?在Tensorflow中,首先必须定义模型的整个计算图,然后运行ML模型。但是在PyTorch中,您可以在移动中定义/操作图形。在RNN中使用可变长度输入时,这一点特别有用。

第3点:

比坦萨学习火炬有更陡峭的曲线。PyTorch更像蟒蛇,构建ML模型感觉更直观。另一方面,要使用Tensorflow,您必须了解它的工作原理(会话、占位符等),因此学习Tensorflow比Pythorch要困难一些。

第4点:

Tensorflow背后的社区比Pythorch大得多。这意味着找到学习Tensorflow的资源变得更容易,也更容易找到问题的解决方案。此外,许多教程和mooc都涉及Tensorflow,而不是使用PyTorch。这是因为与Tensorflow相比,Pythorch是一个相对较新的框架。因此,在资源方面,您将发现关于Tensorflow的内容比PyTorch多得多。

第5点:

如果不提及TensorBoard,这种比较是不完整的。TensorBoard是一个出色的工具,它可以直接在浏览器中可视化ML模型。Pythorch没有这样的工具,尽管您可以始终使用Matplotlib之类的工具。不过,有一些集成可以让你在Pythorch中使用Tensorboard。但它不是本地支持的。

最后,Tensorflow对于生产模型和可伸缩性更好。它是为生产准备的。然而,Pythorch更容易学习,工作起来也更轻松,因此,对于激情项目和快速原型的构建来说相对更好。

好吧,够了!告诉我哪个更好?

没有正确的答案。(我知道,我也讨厌别人这么说)

事实上,有些人认为使用PyTorch更好,而有些人则认为使用Tensorflow更好。这两个框架都是很好的框架,背后有一个巨大的社区和大量的支持。他们都完成了任务。它们都是神奇的魔法棒,可以让你用机器学习魔法。

从以下5个PyTorch基本功能开始

--------------------------------------------

02

功能1 - Torch.device()

Pythorch是一个由Facebook开发的开源库,在数据科学家中非常流行。其崛起背后的一个主要原因是GPU对开发者的内置支持。

这个火炬装置允许您指定负责将张量加载到内存中的设备类型。函数需要指定设备类型的字符串参数。

你甚至可以传递像设备索引这样的序数。或者不指定Pythorch以使用当前可用的设备。

0cfe2a413dfaf8df91205812bcfb67b4.png

例如1.1,我们选择要在运行时存储张量的设备类型。注意,我们已经将设备类型指定为cuda,并且在同一字符串中附加了序号,并用“:”分隔。

示例1.2通过为设备类型和索引传入单独的参数来实现相同的结果。

1f4c966721268aa052a50d616e869e27.png

在创建张量时定义设备类型

中的预期设备类型火炬装置()是cpu、cuda、mkldnn、opengl、opencl、ideep、hip、msnpu。要正确使用此方法,设备类型应存在于预期设备列表中。

让我们看看当我们尝试将GPU指定为设备类型时会发生什么。

6e5cd6f3bbc18be8492665be3c9c44da.png

示例1.3(a)-创建“gpu”类型设备实例时发生运行时错误

指定的设备类型应该在运行笔记本的计算机上可用。否则将导致如例1.3(b)所述的错误。

在1.3(b)中,我们使用需要NVIDIA GPU的cuda设备类型定义了张量。由于我们的机器没有任何可用的GPU,内核抛出了一个运行时错误。

5a1718de52b5f43d8be27949b95ca70f.png

示例1.3(b)-指定不存在的设备类型时发生运行时错误

03

功能2 - torch.view()

这个火炬视图()方法将张量(向量、矩阵或标量)的视图更改为所需的形状。转换后的张量修改了表示维度,但保留了相同的数据类型。

让我们跳进一个例子-

定义一个样本张量x并转换其维数以存储在另一个张量z中。

ebb7220921210654d0619ff7b611fb5b.png

例2.1

在例2.1中,我们变换了表示为单行向量的4x5矩阵的维数。默认情况下,行主顺序连续打印行的元素。变换后的视图中的每个行元素的显示顺序与原始张量中的顺序相同。

此外,新张量的形状必须支持原始张量中相同数量的元素。不能在5 x 3视图中存储4 x 5形状的张量。

4da32ed4d6714a4f149ba172d9c73300.png

例如2.2,我们将使用-1来表示一个维度。Pythorch自动从其他维度解释未知维度。变换张量在大小和步幅上与原始张量兼容。

1d26b0468cd72c08813c131fb8ae690e.png

示例2.3-形状不正确

请注意,一次只有一个维度是可推断的。对多个维度使用-1只会导致歧义和运行时错误!

Pythorch只允许-1作为最多1个维度的可接受值。如果有多个维度作为-1传递,它将抛出一个运行时错误。

04

功能3 - torch.set_printoptions()

很多时候,您希望在执行某些任务之前打印张量的内容。为此,在笔记本中打印张量时,可能需要更改显示模式。

使用set_printoptions,您可以调整精度级别、线宽、结果阈值等属性。

在我们的例子中,我们将使用一个表示20×30矩阵的张量。通常不需要在笔记本上显示如此巨大的矩阵。打印张量变量背后的一般用例是查看前几行和最后几行。

d8f90cd9eef0108dcf445de75f441dc3.png

示例3.1(a)-使用默认打印选项打印

我们将根据我们的喜好,利用阈值、边缘项和线宽属性来改变张量的视觉表现。我们还可以使用precision属性更改小数点后要显示的位数。

45302f2ca3699ac3bb667dabdcd59377.png

示例3.1(b)-更新打印选项以显示更少的行

在这个方法中有3个配置文件可供我们使用:默认、微型和完整。将配置文件名与其他属性一起传递是一种错误的用法。在这种情况下,函数将忽略profile属性。

16e34d2a98a749155db08af94504e501.png

例3.2

05

功能4 - Tensor.backward()

张量用于简化机器学习管道中所需的常见任务。为了进行梯度下降,一种流行的损失最小化技术,我们需要计算梯度(召回-导数)与损失函数。

Pythorch通过在每个方法调用中存储渐变,用backward()方法简化了这一过程。注意:Pythorch仅在其require_grad属性设置为True时计算张量的渐变。

7e8a690ae3c74ce4dd92396be4bfafdc.png

例4.1

我们将使用线性方程y=mx+c来求方程中每个变量的偏导数。

c737e111abfe74b67fb7da40ebc58fd6.png

例4.1(a)

在调用y.backward()方法并打印computes渐变之后,我们可以访问张量x的.grad属性。

d5343145fbb7d44298104013ae5af176.png

例4.1(b)

由于我们没有将require_grad选项设置为True,因此在调用m的.grad属性时不会得到结果。

4fb42a5c5716c5c83572b8795716e62b.png

再次调用y.backward()将导致yw.r.t张量的二阶微分。请注意,Pythorch累积存储渐变。

06

功能5 - Torch.linespace()

方法的作用是:返回包含一系列数字的一维张量。与随机生成数字的rand()函数不同,返回的数字是linspace()中算术级数序列的成员。

每个成员之间的差异由steps属性和范围(end-start)指定。

e4e33a2996df1232887496f6b6a3c103.png

例5.1

输出张量包含50个等距数字,范围为1-10。dtype属性为int,因此不存储小数位数。

340cd1cf6542af39d9cf3c6b14b8a738.png

例5.2-out属性也可以用来指定张量来存储方法的结果。

请注意,在使用linspace()方法创建张量时,dtype值必须与输出张量定义的数据类型一致。

6dbc8ca7f58f8cb2f2b2f2a21ce38657.png

示例5.3-dtype属性不匹配

07

结束语

本文介绍了pytorchapi中提供的一些基本方法,以帮助您开始使用它。由于大部分实现都是从NumPy库中借来的,以构建Python开发人员现有的理解和经验,所以API很容易入门。

阅读完这些函数后,下一步是浏览官方文档。由于PyTorch是一个深入学习的库,因此强烈建议您在开始使用这些函数之前学习ML基础知识。

08

资源引用

Pythorch官方文件: https://pytorch.org/docs/stable/torch.html

python源代码: https://jovian.ml/aman-a-agarwal/01-tensor-operations/v/8?utm_source=embed#C3

b952e4f53060944c32729f64075ea279.gif

00b23f035e2cf9e4dcceffd610e140f5.png

1fe0f813f6ef748ea7fc6b81710901da.gif 点击上方蓝字 db39c3c88d245dd06ec30fa197550d36.png 关注我们 4e52d4214222bc26fd8272b324b94c3f.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值