111_神经网络的指路明灯:损失函数与反向传播深度解析
如果说神经网络的架构是它的“身体”那么损失函数就是它的“感官”而反向传播则是它的“进化机制”。通过这两者的结合模型才能知道自己错在哪里并朝着正确的方向不断修正。1. 损失函数的核心作用损失函数Loss Function在训练中扮演着两个至关重要的角色衡量差距计算实际输出Outputs与目标输出Targets之间的距离。Loss 越小说明模型预测越准。提供依据为模型参数的更新提供方向。2. 常见的损失函数文件介绍了三种不同场景下的损失函数① L1Loss计算方式计算预测值与真实值之差的绝对值平均数。数学公式.② MSELoss (均方误差)计算方式计算差值的平方平均数。特点对离群点误差大的点非常敏感误差越大惩罚越重。③ CrossEntropyLoss (交叉熵损失)这是分类任务中最常用的损失函数。它结合了LogSoftmax和NLLLoss。作用衡量两个概率分布之间的差异。当模型对正确类别的预测概率越高损失值就越低。3. 反向传播参数更新的秘密计算出 Loss 之后我们该如何调整网络中的权重Weights呢这就是Backward Propagation的任务。核心步骤调用.backward()当你对 Loss 值调用此方法时PyTorch 会利用数学中的链式法则自动计算出 Loss 对网络中每个节点参数的梯度Gradient。梯度属性在反向传播之前参数的grad属性为空执行后每个参数都会获得一个梯度值。意义梯度告诉了我们如果要减小 Loss这个参数应该往大调还是往小调。4. 代码实战在模型中使用损失函数文件展示了如何在之前搭建的 CIFAR-10 网络中集成损失计算Pythonimport torch from torch import nn # 1. 定义交叉熵损失函数 loss nn.CrossEntropyLoss() # 2. 实例化网络 tudui Tudui() # 3. 训练循环模拟 for data in dataloader: imgs, targets data # 前向传播得到实际输出 outputs tudui(imgs) # 计算损失对比输出与目标 result_loss loss(outputs, targets) # 反向传播计算每个节点的梯度 result_loss.backward() # 打印当前的损失值 print(fCurrent Loss: {result_loss.item()})5. 总结训练的闭环逻辑通过分析该文件我们补全了模型训练的最后一块拼图Forward前向数据流过网络得到结果计算Loss。Backward反向根据 Loss 计算各层的Gradients梯度。Optimize优化利用梯度更新权重下一节内容。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2437445.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!