Deep Learning with Pytorch - autograd

Deep Learning with Pytorch: A 60 Minute Blitz

Autograd: automatic differentiation

Autograd: 自动微分

在 Pytorch 中所有神经网络的中心就是 autograd
让我们首先短暂地了解一下,然后我们将训练我们第一个神经网络.

autograd 包提供了在 Tensors 上所有操作的自动微分. 这是一个运行时定义的框架, 即你的反向传播算法是由你的代码怎样运行定义的, 每一次迭代都将不同.

Variable

autograd.variable 是这个包的中心类. 它包装了一个 Tensor 并且支持几乎所有定义在 Tensor 上的操作.一旦你结束计算你可以调用 .backward()使你的所有梯度都自动计算

你可以通过 .data特性访问任何 raw Tensor, 关于(w.r.t.with respect to)这个变量的梯度可以被积累至.grad

h还有一个对autograd实现非常重要的类 Function
Variable 和 Function 相互联系共同构建了一个循环图, 图编码了计算的全部历史. 每个Variable都有一个.grad_fn特性, 指向创造Varaible的Function ( 除了Varaibles是被用户创建,这是grad_fn为None ).

如果你想计算导数,可以对Variable调用.backward().如果Variable是一个标量,并不需要对backward()指明任何参数,但是如果Variable有很多元素,就要指明一个梯度参数, 该参数是匹配形状的张量.

import torch 
from torch.autograd import Variable
x = Varaible(torch.ones(2, 2), requires_grad=True); # 创建一个Variable
print(x)

y = x + 2
print(y)
# 因为y作为一个操作的结果被创建,所以它有grad_fn
print(y.grad_dn)

z = y * y * 3
out = z.mean()
print(z, mean)

Gradient

让我们backprop, out.backward() 就是 out.backward(torch.Tensor([1, 0]))
# 这里相当给出了x的初始值,就是算出求导公式后带入x计算的x的值
out.backward();
print(x.grad)`
我们应该会得到一个所有元素都是4.5的矩阵,
我们称out为Variable”o”
O=14iZi O = 1 4 ∑ i Z i ;
Zi=3(xi+2)2 Z i = 3 ( x i + 2 ) 2 ;
Zi|xi=1=27 Z i | x i = 1 = 27 ;
dodx=32(xi+2) d o d x = 3 2 ( x i + 2 )
dodxi|xi=1=92=4.5 d o d x i | x i = 1 = 9 2 = 4.5

你可以用autograd做很多疯狂的事情

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

y = x * 2
while y.data.norm() < 1000:
    y = y * 2
print(y)

gradients = torch.FloatTensor([0.1, 1.0, 0.001])
y.backward(gradients)
# y 对 x 的求导结果就是1024
print(x.grad)
# result:
#  102.4000 
# 1024.0000
#    1.0240
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 深度学习是一项非常热门的技术,在人工智能领域得到广泛应用。PyTorch是一种使用Python编程语言的开源深度学习框架,它非常适合研究和开发深度学习模型。为了帮助初学者更好地学习PyTorch深度学习技术,CSDN(全球最大中文IT社区)开设了“DeepLearning with PyTorch”系列课程。 这个系列课程以实践为主要教学方式,让学生在实际操作中掌握PyTorch深度学习的技能。在学习过程中,学生可以学到基础的模型结构设计,各种优化算法,如学习率调整、梯度下降等,并且可以在实战操作中学到如何使用PyTorch完成各种实际应用,例如图像分类和识别,自然语言处理等等。 这门课程的受众群体不仅仅是那些想要从事人工智能开发的工程师,它对于对深度学习感兴趣的学生和科研人员也是非常有用的。这是因为在这个课程中,教师基于实际使用场景和数据集介绍了PyTorch深度学习技术,从实践中总结出的方法和经验不仅可以快速提升工程开发效率,也可以加深对深度学习理论的理解。 总之,“DeepLearning with PyTorch”系列课程非常实用和有趣,可以为初学者提供全面而深入的深度学习知识,帮助他们掌握用PyTorch来开发深度学习模型的基础技能。 ### 回答2: Deep Learning是一种用于训练多层神经网络的机器学习方法,已被广泛应用于视觉、语音、自然语言处理等领域。而PyTorch是一种开源的深度学习框架,具有快速、灵活、易用等优点,因此受到了越来越多的关注和使用。 CSDN是一个致力于IT技术在线学习和分享的平台,在其中学习deeplearning with pytorch将能够获取丰富的知识和实践经验。首先,我们需要了解PyTorch的基本概念和操作方法,如如何构建网络模型、定义损失函数和优化器、进行前向传播和反向传播等。然后,我们可以学习如何使用PyTorch进行数据预处理,如数据清洗、标准化、归一化等。此外,还可了解如何使用PyTorch进行分布式训练、混合精度训练等高级技术,以及如何在GPU上进行训练和推理等实践技巧。 总之,在CSDN上学习deeplearning with pytorch,能够让我们更好地掌握PyTorch的使用技巧,帮助我们更快、更好地完成深度学习的应用开发和研究工作。同时也可以通过活跃在CSDN平台上与其他开发者的交流来共同进步。 ### 回答3: PyTorch是一种针对深度学习任务的开源机器学习库,它支持快速的原型设计和大量的实验,是当前科学界和工业界中最受欢迎的深度学习框架之一。CSDN推出的Deeplearning with Pytorch系列课程就是致力于教授学生如何使用PyTorch进行深度学习,以及在此基础上更深层次的研究探索。 此系列课程包含了从入门到进阶多个方面的内容,在基础课程中,学员将学会如何使用PyTorch进行深度学习的各个方面,包括但不限于神经网络、优化器、损失函数等,使其基本掌握PyTorch的使用方法。而在进阶课程中,以一些大型深度学习任务为基础,详细介绍了超参数优化、神经网络模型架构选择、分布式训练、自己写网络模型等更高级的知识,通过深度剖析一些开源库的源码,为学员提供了很多实现深度学习任务的技巧和方法。 课程的开设不仅帮助了很多想更深入了解深度学习的爱好者,也有助于那些打算将深度学习应用在自己的科研工作中的研究者们更加快捷、有效地完成自己的研究任务。相信随着人工智能的不断发展,PyTorch这样的框架将会发挥越来越重要的作用,而帮助大家掌握这些工具的Deeplearning with Pytorch系列课程也必将得到更多的关注和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值