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
相关推荐
Go Work1 小时前
docker 占满根分区时先分清谁在吃盘
经验分享·笔记
3095566662 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
蒸蒸yyyyzwd3 小时前
从邓明学习的后端笔记
笔记·学习
岑梓铭3 小时前
《考研408数据结构》第八章(排序)复习笔记
数据结构·笔记
在所不辞兄4 小时前
为什么在新能源汽车电驱与热管理开发中,AI驱动的数字孪生和数据驱动仿真正在部分替代对物理台架与实车标定的依赖?
人工智能·深度学习·神经网络·算法·机器学习
Rabitebla15 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
伞伞悦读16 小时前
【第83期】特征选择中的验证泄漏排查的实验与排查
人工智能·深度学习·机器学习
一只废狗狗狗狗狗狗狗狗狗17 小时前
自监督式学习
人工智能·深度学习·机器学习·bert
坤坤子吖20 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
aifannihao20 小时前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱
pytorch·python·深度学习·cnn·学习路线