pytorch深度学习笔记12

目录

摘要

输出层的反向传播和实现


摘要

本篇文章继续学习尚硅谷深度学习教程,学习内容是输出层的反向传播和代码实现

输出层的反向传播和实现

在输出层,我们一般使用Softmax作为激活函数。

对于Softmax函数:

其偏导数为:

而对于输出层,一般会直接将结果代入损失函数的计算。对于我们之前介绍的分类问题,这里选择交叉熵误差(Cross Entropy Error)作为损失函数,就可以得到一个Softmax-with-Loss层,它包含了Softmax和Cross Entropy Loss两部分。

导数的计算会比较复杂,可以用计算图表示如下:

简化得:

在代码中可以实现为一个类 SoftmaxWithLoss:

复制代码
class SoftmaxWithLoss:
    def __init__(self):
        self.loss = None
        self.y = None # softmax的输出
        self.t = None # 监督数据

    def forward(self, x, t):
        self.t = t
        self.y = softmax(x)
        self.loss = cross_entropy_error(self.y, self.t)
        
        return self.loss

    def backward(self, dout=1):
        batch_size = self.t.shape[0]
        if self.t.size == self.y.size: # 监督数据是one-hot-vector的情况
            dx = (self.y - self.t) / batch_size
        else:
            dx = self.y.copy()
            dx[np.arange(batch_size), self.t] -= 1
            dx = dx / batch_size
        
        return dx
相关推荐
nnsix3 小时前
Unity 动画 Avatar 笔记
笔记·unity·游戏引擎
宝贝儿好3 小时前
【LLM】第三章:项目实操案例:智能输入法项目
人工智能·python·深度学习·算法·机器人
ishangy4 小时前
皮带撕裂早期特征提取:AI摄像机+深度学习在港口的应用
人工智能·深度学习·智慧港口·港口皮带ai识别·皮带检测识别
kcuwu.4 小时前
深度学习技术完全指南
人工智能·深度学习
雷帝木木4 小时前
Python 类型提示与静态类型检查的高级应用
人工智能·python·深度学习·机器学习
雷帝木木4 小时前
Python 中的正则表达式:从基础到高级应用
人工智能·python·深度学习·机器学习
中草药z4 小时前
【测试基础】Python 核心语法,一篇搞定测试脚本开发基础
开发语言·笔记·python·学习·测试·语法
AI先驱体验官4 小时前
臻灵短剧平台 · 用户操作手册
大数据·人工智能·深度学习·重构·aigc
一口吃俩胖子5 小时前
【脉宽调制DCDC功率变换学习笔记020】频域性能准则
笔记·学习
山科智能信息处理实验室5 小时前
告别“补点”时代:PaCo 用参数化补全重写多边形重建规则
深度学习·3d