PyTorch 动态计算图构建的理解

与TensorFlow等框架使用的“静态计算图”不同。在PyTorch中,计算图是在运行时动态构建的,这意味着在每次前向传播时,都会根据当前的操作创建一个新的计算图。

下面举一个简单的例子来帮助理解:

import torch  
  
# 创建一个张量并设置requires_grad=True来跟踪其计算历史  
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>)'''
  
# y是操作的结果,所以它有grad_fn属性  
print(y.grad_fn) 
'''<AddBackward0 object at 0x0000017595769720>''' 
   
z = y * y * 3  
out = z.mean()  
  
print(z, out)
'''tensor([[27., 27.],
        [27., 27.]], grad_fn=<MulBackward0>) 
   tensor(27., grad_fn=<MeanBackward0>)'''

在这个例子中,我们首先创建了一个形状为(2, 2)的张量x,并设置requires_grad=True以便跟踪其计算历史。然后我们对x进行了一系列的操作,最后计算了结果的均值。

在这个过程中,PyTorch会自动地为我们构建一个计算图。这个计算图记录了从输入x到输出out的所有操作。当对out进行反向传播时,PyTorch会利用这个计算图来计算梯度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值