损失函数和梯度产生后,可以用优化器对卷积核进行改进,此为反向传播。
optim = torch.optim.SGD(tudui.parameters(),lr=0.01)
这是直接引用的官方给的优化器SGD,我们要传入卷积的参数tudui.parameters()和设置学习率lr=0.01。
optim.zero_grad()#先把梯度清零,因为重新计算这轮的梯度以优化
每次优化前要进行梯度清零,否则会导致梯度累加会梯度爆炸
我们由loss_sum对每次循环的损失量进行累加。进行了50次循环,结果(截取最后几轮)为:
tensor(160.2410, grad_fn=<AddBackward0>)
tensor(157.1011, grad_fn=<AddBackward0>)
tensor(153.9503, grad_fn=<AddBackward0>)
tensor(150.7619, grad_fn=<AddBackward0>)
tensor(147.5262, grad_fn=<AddBackward0>)
tensor(144.2476, grad_fn=<AddBackward0>)
tensor(140.9552, grad_fn=<AddBackward0>)
tensor(137.6162, grad_fn=<AddBackward0>)
tensor(134.2308, grad_fn=<AddBackward0>)
可以看到损失越来越小。
版权所有:Copyright © 2002-2017 欧陆平台-欧陆娱乐-注册登录中心 版权所有 粤IP**********