Pytorch网络训练流程的作用原理:源码分析optimizer.zero_grad()loss.backward()optimizer.step()

本文详细剖析了PyTorch中optimizer.zero_grad(), loss.backward(), optimizer.step()的核心作用,包括梯度清零、反向传播和参数更新的过程,以及它们在训练模型时的优缺点。从理论到实践,适合理解优化器工作原理的开发者阅读。

常见参数训练流程的作用原理

1 总述

在用pytorch训练模型时,通常会在循环epoch的过程中,不断循环遍历所有训练数据集。

依次用到optimizer.zero_grad()loss.backward()optimizer.step()三个函数,如下所示:

model = MyModel()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9, weight_decay=1e-4)  
for epoch in range(1, epochs):
    for i, (inputs, labels) in enumerate(train_loader):
        output= model(inputs)
        loss = criterion(output, labels)
        # compute gradient and do SGD step     
        optimizer.zero_grad()     
        loss.backward()     
    	optimizer.step
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值