当pytorch提供的内置损失函数无法实现需求时,可以通过自定义损失函数来实现目标。内置损失函数定义在torch.nn中,常用的有MSELoss(),L1Loss(),CrossEntropyLoss()等。自定义损失函数常通过类实现,像自定义神经网络一样,继承nn.Module()并且实现__init__()和forward()函数,在使用时,直接实例化类对象即可,这样实现的好处是全程用pytorch内置的数据结构进行处理,规范统一。
动态调整学习率的目的是让减少网络训练中震荡,是loss继续下降,模型收敛的更优。在pytorch中学习率被称为scheduler,一个优化器有多个参数组(param_group),每个参数组中用字典结构存储着信息,其中神经网络的参数组中,键‘lr’对应的就是学习率。定义优化器在torch.optim中,常用的优化器有Adam等,优化器需要至少一个参数,该参数即为该优化器需要优化的网络结构,例如 optimizer = torch.optim.Adam(net.parameters()),学习率的设置为 scheduler1 = torch.optim.lr_scheduler. StepLR (optimizer, ,step_size = 30),在实际训练时,需要先调用优化器optimizer.step()再调用scheduler1.step()进行学习率的改变。自定义调整学习率,定义一个函数def adjust_lr_rate(optimizer,…),通过for param_group in optimizer.param_groups: param_group[‘lr] = adjust_lr_rate(optimizer,…)来实现。
模型微调为借鉴大模型提供了一个有效的方案:通过修改模型的部分层(例如输入层),并关闭其余层的梯度计算,仅开放新加网络层的梯度计算,在沿用大模型模型参数与知识的基础上,在自己小数据集上训练新的网络层,从而高

最低0.47元/天 解锁文章
4003

被折叠的 条评论
为什么被折叠?



