2019-09-03

###权重参数如何在得到梯度值后,进行优化更新?

(https://blog.csdn.net/yangzhengzheng95/article/details/85268896)
这个链接中的文章很好的说明了这个问题,并给了一个简易的代码以供参考。就比如我提问的这个问题,它的优化更新,是要选择一种适合我们网络的优化算法,torch.optim是一个实现各种优化算法的包,可以直接通过这个包进行调用。但是进行优化参数更新之前,需要先将参数的梯度通过loss反向传播求出,再对需要优化的参数写代码进行优化。值得注意的是,优化之前,在优化前需要先将梯度归零,即optimizer.zeros()。

上段所提到的优化前的准备:

通过定义损失函数:criterion,然后通过计算网络真实输出和真实标签之间的误差,得到网络的损失值:loss;
最后通过loss.backward()完成误差的反向传播,通过pytorch的内在机制完成自动求导得到每个参数的梯度。

##loss.backward()实现反向传播,它的作用是什么?反向传播又是什么?损失函数的选择又该如何确定?

我知道反向传播是按照计算图将每一个参数的梯度计算出来,为优化函数进行服务,优化函数对权重参数优化会选择规定的参数且必须有它们的梯度。

你可能感兴趣的:(2019-09-03)