首页 > 编程知识 正文

torch有必要做吗,pytorch permute

时间:2023-05-04 09:01:20 阅读:168158 作者:908

@Xia

了解Pytorch的backward (和optim.setp ) (backward ) )和optim.setp ) )对这两个函数之间的调用不太了解,因此应该花了一些时间才了解。

首先来看看最简单的bp回归梯度下降的代码

forepochinrange(num_epoch ) : for i, 将datainenumerate(train_loader ) : optimizer.zero_grad ) model参数的gradient添加到optimizer中的train _ pred=model (datatatatad ) 调用del的forward函数batch_loss=loss(train_pred ),data[1] . cuda () ) loss计算(注意,prediction和label必须同时位于CPU或GPU上) batch_loss.backward )使用back propagation为每个参数生成图形

CSDN有很多资料。 backward函数其实是计算坡度,只是计算。 x=th.ones(1,requires_grad=True ) z=x 1y=z**3t=y 2m=t*6m.backward ) ) print ) x.grad )输出

tensor([72.]参考: https://blog.csdn.net/QQ _ 24884193/article/details/109517890

backward函数到底干了什么?

本质上是优化计算出的梯度,省略说明。

那么optim.step()函数做了什么呢?

实际上,Loss函数相当于对CNN网络的输出再次进行了function (函数)。 这个function )函数的输出称为Loss。 向Loss请求备份(即loss.backward ) )。 以下代码是最简单的示例,但m不是卷积神经网络的输出

x=th.ones(1,requires_grad=True ) z=x1y=z**3t=y2m=t*6Loss=loss(m ) #具体参数取决于不同的loss函数

这个问题其实可以回答前面的问题。 Loss函数传递的类型是tensor,它包含用于存储相应坡度值的grad属性。

另外,tensor型记录网络结构(在参考问题3中,可以针对loss计算梯度,递归地计算Loss函数和backward函数有什么关系?,因此即使计算loss也不会传递model参数,但实际上tensol参数

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。