【deep learning with pytorch 】Tensor

【deep learning with pytorch】Tensor

pytorch 与tensorflow一样为python的科学计算库,可以自动为神经网络进行反向梯度传播。在pytorch中最关键的库就是autograd,就是它起到了这个作用。
autograd这个库让变量类型为tensor的变量可以自动进行梯度运算,但是梯度运算需要基于运行的框架之中,也就是说,只有当网络在跑的时候才能够做反向传播,这样每次迭代变量的数值也才会不同。

Tensor

在pytorch中主要的类为torch.Tensor。一般的变量可以定义为这个类。在定义Tensor的时候,你可以选择是否要对该变量计算梯度。(让变量的参数 .require_grad 为True,默认为false)这时,对该变量的任何计算操作都会被记录下来,结束计算的时候再调用 .backward() 函数,这样就可以计算出变量的梯度,并会将梯度存入 .grad 之中。
为了停止记录对一个变量的所有操作可以调用 .detach() 函数,可以防止未来对该变量的操作被记录下来。
但有的时候可能想要让一整个神经网络不做反向梯度传播。如果对每一个变量都调用 .detach() 函数会非常麻烦,故而可以使用torch.no_grad() ,它可以对一整个神经网络进行操作,让这个代码块中的tensor(特别是 .require_grad 参数为True的变量)不再进行反向梯度计算。(这一点经常在test中用到)
在pytorch中还有一个非常重要的类是Function类。Function类和tensor类是相互影响、相互纠缠的。tensor中有一个参数为 .grad_fn 代表了这个tensor被建立的方式。比如说:

import torch
#建立一个张量x
x = torch.ones(2, 2, requires_grad=True)
print(x)
#结果为:tensor([[1., 1.],
        #[1., 1.]], requires_grad=True)
#做加法预算:
y = x + 2
print(y)
#结果为:tensor([[3., 3.],
       # [3., 3.]], grad_fn=<AddBackward0>)
print(y.grad_fn)
#out:    <AddBackward0 object at 0x7f31024d1f98>   
#这里显示的是y的创建方式
#对y做更多的操作:
z = y * y * 3
out = z.mean()

print(z, out)
#结果tensor([[27., 27.],
       # [27., 27.]], grad_fn=<MulBackward0>) tensor(27., grad_fn=<MeanBackward0>):

#计算反向梯度:
out.backward();#进行反向梯度计算**注意这里用.backward()函数只能对一个scalar使用如果想要对非scalar使用,见下面的例子**
print(x.grad)#得到d(out)/dx
#结果为:tensor([[4.5000, 4.5000],
        #[4.5000, 4.5000]])

具体计算过程如图:
在这里插入图片描述
这里拓展了计算反向传播的具体计算过程,即雅各比矩阵。以及链式法则运算上面说过如果.backward()针对非scalar变量使用的时候,需要乘上一个v矩阵,其中v矩阵应该是一个反向求导得到的结果。

x = torch.randn(3, requires_grad=True)

y = x * 2
while y.data.norm() < 1000:
    y = y * 2
v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward(v)#这里要乘以v

print(x.grad) 

#结果:tensor([1.0240e+02, 1.0240e+03, 1.0240e-01])
print(x.requires_grad)#True
print((x ** 2).requires_grad)#True

with torch.no_grad():#注意这里torch.no_grad()的运用
    print((x ** 2).requires_grad)#False
### 回答1: 《Deep Learning with PyTorch》是一本关于PyTorch深度学习的中文版教材。 这本教材首先介绍了深度学习的相关基础知识,包括神经网络、反向传播、损失函数等。然后详细介绍了PyTorch框架的基本概念和使用方法,包括张量操作、自动求导、模型构建和训练等。接下来,教材展示了如何使用PyTorch进行图像分类、文本处理、语音识别以及生成对抗网络等任务,并提供了丰富的实例代码和实验。此外,教材还介绍了PyTorch的高级功能,如分布式训练和模型部署等,并探讨了一些深度学习的进阶话题,如迁移学习和强化学习。 本书以简洁清晰的语言和丰富的示例代码,帮助读者快速掌握PyTorch深度学习的基本原理和实际应用。无论是初学者还是有一定经验的开发者,都能从中获得实用的知识和技巧。此外,教材还提供了练习题和扩展阅读材料,以帮助读者巩固所学内容和深入了解相关领域的最新研究进展。 总之,《Deep Learning with PyTorch》是一本非常实用的PyTorch深度学习教材,对于想要学习或深入了解PyTorch框架的人来说,是一本不可多得的参考书。 ### 回答2: 《深度学习与PyTorch》是一本关于PyTorch深度学习框架的中文版图书。本书详细介绍了深度学习的基本概念、原理和应用,并结合PyTorch框架进行实践。PyTorch是一个开源的深度学习框架,它提供了丰富的工具和函数,方便用户进行模型的构建、训练和部署。 《深度学习与PyTorch》这本书的主要内容包括PyTorch的安装和配置、Tensor基本操作、神经网络的构建、卷积神经网络和循环神经网络的应用、GAN和强化学习等。在教学过程中,书中通过丰富的示例代码和实际案例来帮助读者理解和应用深度学习算法。通过阅读这本书,读者能够系统地学习到PyTorch框架中深度学习算法的实现方法和应用技巧。 《深度学习与PyTorch》这本书的特点是全面、易懂和实用。作者简洁明了地介绍了PyTorch框架的基本原理,并通过大量的实例和实践案例指导读者如何使用PyTorch进行深度学习项目。此外,这本书还介绍了一些实际应用领域,如计算机视觉、自然语言处理和推荐系统等,帮助读者将深度学习算法应用到实际问题中去解决。 总的来说,《深度学习与PyTorch》这本书对于想要学习和应用深度学习算法的读者来说,是一本很好的参考资料。不仅可以帮助读者了解深度学习的基本概念和原理,还能指导读者如何使用PyTorch框架进行实践,提升深度学习的应用水平。无论是初学者还是有一定经验的深度学习从业者,都可以从这本书中获得实用的知识和技巧。 ### 回答3: 《深度学习与PyTorch》是一本介绍使用PyTorch进行深度学习的中文版教材。PyTorch是一种基于Python的开源深度学习框架,具有灵活性和易用性,被广泛用于研究和实际应用中。这本书旨在帮助读者从基础开始学习深度学习及其在PyTorch中的实现。 本书的内容涵盖了深度学习的基本概念和原理,包括前馈神经网络、卷积神经网络、循环神经网络等常见的神经网络模型。读者可以学习如何使用PyTorch构建、训练和优化这些模型。此外,书中还介绍了常用的深度学习技术,如数据预处理、模型调优和迁移学习等。每个章节都配有相应的示例代码和实例,以便读者更好地理解和实践。 不仅如此,《深度学习与PyTorch》还介绍了如何在不同任务中应用深度学习,如图像分类、目标检测、文本生成等。这些实际案例可以帮助读者更好地理解深度学习在不同领域的应用,并通过实现具体项目来提高技能。 总之,对于想要学习深度学习和PyTorch的读者,《深度学习与PyTorch》是一本很好的资源。它以简洁清晰的语言介绍了深度学习的基本原理和PyTorch的基础知识,配有丰富的示例和案例,让读者能够更好地掌握深度学习的理论和实践应用。无论是初学者还是有一定经验的研究者,都能从这本书中受益匪浅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值