pytorch自动求导的疑问

如pytorch的自动求导框架,在求loss层的时候,一般都是一个矩阵到张量(loss)的映射,而且这一层一般都是没有需要学习的参数。但是这里还是会有许多操作,如sum,mean…等操作。我的疑问是:误差反向传播我并没有写,这里是不是就是pytorch的自动求导功能。2. 在求loss的操作中,只能用torch.sum(),torch.mean()等pytorch自带的操作,能否用numpy的操作代替。

代码

import torch
from torch.autograd import Variable
import numpy as np

def csum(input):
    # res = input.sum()
    npinput = input.detach().numpy()
    res = np.sum(npinput)
    res = torch.FloatTensor([res])
    return res

data = torch.randn((5, 5), requires_grad=True)

res = csum(data)
res.backward()
print(data.grad)

报错:RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
要有grad_fn属性,所以用numpy实现操作的时候,需要自己实现误差的反向传播

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值