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
相关推荐
童话名剑3 小时前
训练词嵌入(吴恩达深度学习笔记)
人工智能·深度学习·word2vec·词嵌入·负采样·嵌入矩阵·glove算法
YMWM_5 小时前
深度学习中模型的推理和训练
人工智能·深度学习
weixin_395448916 小时前
export_onnx.py_0130
pytorch·python·深度学习
工程师老罗7 小时前
反向传播及其用法
pytorch
抠头专注python环境配置7 小时前
基于Pytorch ResNet50 的珍稀野生动物识别系统(Python源码 + PyQt5 + 数据集)
pytorch·python
~kiss~7 小时前
大模型中激活函数、前馈神经网络 (FFN) 的本质
人工智能·深度学习·神经网络
Keep_Trying_Go8 小时前
基于GAN的文生图算法详解ControlGAN(Controllable Text-to-Image Generation)
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·文生图
三水不滴8 小时前
Redis缓存更新策略
数据库·经验分享·redis·笔记·后端·缓存
懒羊羊吃辣条8 小时前
电力负荷预测怎么做才不翻车
人工智能·深度学习·机器学习·时间序列
ziqi52210 小时前
第二十四天笔记
笔记