当前位置: 首页 > news >正文

第四章.误差反向传播法—ReLU/Sigmoid/Affine/Softmax-with-Loss层的实现

第四章.误差反向传播法

4.2 ReLU/Sigmoid/Affine/Softmax-with-Loss层的实现

1.ReLU层

1).公式

在这里插入图片描述

2).导数:

在这里插入图片描述

3).计算图:

在这里插入图片描述

4).实现:

class ReLU:def __init__(self):self.mask = None# 正向传播def forward(self, x):self.mask = (x <= 0)  # 输入值是否≤0,返回值是由True/False构成的Numpy数组out = x.copy()out[self.mask] = 0  # mask中的元素为True的地方置为0return out# 反向传播def backward(self, dout):dout[self.mask] = 0dx = doutreturn dx

2.Sigmoid层

1).公式:

在这里插入图片描述

2).计算图:

在这里插入图片描述

  • 简洁版
    在这里插入图片描述

3).导数:

在这里插入图片描述

4).实现:

import numpy as npclass Sigmoid:def __init__(self):self.out = None# 正向传播def forward(self, x):out = 1 / (1 + np.exp(-x))self.out = outreturn out# 反向传播def backward(self, dout):dx = dout * (1.0 - self.out) * self.outreturn dx

3.Affine层

  • 神经网络的正向传播中进行的矩阵乘积运算在几何学领域被称为“仿射变化”,因此,将进行仿射变化的处理实现为Affine层
  • 几何中,仿射变换包括一次线性变换和一次平移,分别对应神经网络的加权和运算和加偏置运算。

1).计算图:

  • 单个数据的Affine层:
    在这里插入图片描述

  • 批版本的Affine层:
    在这里插入图片描述

2).实现:

·未考虑输入张量的情况:

import numpy as npclass Affine:def __init__(self, W, b):self.W = Wself.b = bself.x = Noneself.dw = Noneself.db = None# 正向传播def forward(self, x):self.x = xout = np.dot(self.x, self.W) + self.breturn out# 反向传播def backward(self, dout):dx = np.dot(dout, self.W.T)self.dw = np.dot(self.x.T, dout)self.db = np.sum(dout, axis=0)return dx

·考虑输入张量的情况 (张量就是多维数据)

import numpy as npclass Affine:def __init__(self, W, b):self.W = Wself.b = bself.x = Noneself.original_x_shape = None# 权重和偏置参数的导数self.dW = Noneself.db = Nonedef forward(self, x):# 对应张量self.original_x_shape = x.shape  # 例如:x.shape=(209, 64, 64, 3)x = x.reshape(x.shape[0], -1)  # x=(209, 64*64*3)self.x = xout = np.dot(self.x, self.W) + self.breturn outdef backward(self, dout):dx = np.dot(dout, self.W.T)self.dW = np.dot(self.x.T, dout)self.db = np.sum(dout, axis=0)dx = dx.reshape(*self.original_x_shape)  # 还原输入数据的形状(对应张量)return dx

4.Softmax-with-Loss层

  • 神经网络中进行的处理有推理学习两个阶段,推理阶段通常不适用softmax层,学习阶段需要使用softmax层。

1).计算图:

在这里插入图片描述

2).实现:

import numpy as npclass SoftmaxWithLoss:def __init__(self):self.loss = None  # 损失self.y = None  # softmax的输出self.t = None  # 监督数据(one_hot vector)# 输出层函数:softmaxdef softmax(x):if x.ndim == 2:x = x.Tx = x - np.max(x, axis=0)y = np.exp(x) / np.sum(np.exp(x), axis=0)return y.Tx = x - np.max(x)  # 溢出对策return np.exp(x) / np.sum(np.exp(x))# 交叉熵误差def cross_entropy_error(y, t):if y.ndim == 1:t = t.reshape(1, t.size)y = y.reshape(1, y.size)# 监督数据是one-hot-vector的情况下,转换为正确解标签的索引if t.size == y.size:t = t.argmax(axis=1)batch_size = y.shape[0]return -np.sum(np.log(y[np.arange(batch_size), t] + 1e-7)) / batch_size# 正向传播def forward(self, x, t):self.t = tself.y = self.softmax(x)self.loss = self.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_sizeelse:dx = self.y.copy()dx[np.arange(batch_size), self.t] -= 1dx = dx / batch_sizereturn dx

相关文章:

第四章.误差反向传播法—ReLU/Sigmoid/Affine/Softmax-with-Loss层的实现

第四章.误差反向传播法 4.2 ReLU/Sigmoid/Affine/Softmax-with-Loss层的实现 1.ReLU层 1).公式 2).导数&#xff1a; 3).计算图&#xff1a; 4).实现&#xff1a; class ReLU:def __init__(self):self.mask None# 正向传播def forward(self, x):self.mask (x < 0) # 输入…...

Python-第二天 Python基础语法

Python-第二天 Python基础语法一、 字面量1.1 常用的值类型1.1.1 字符串&#xff08;string&#xff09;二、注释2.1 注释的作用2.2 注释的分类三、变量3.1 什么是变量3.2 变量的特征四、数据类型4.1 数据类型4.2 type()语句4.3 type()语句的使用方式4.4 变量有类型吗&#xff…...

命令模式包含哪些主要角色?怎样实现命令?

命令模式包含以下主要角色&#xff1a;抽象命令类&#xff08;Command&#xff09;角色&#xff1a; 定义命令的接口&#xff0c;声明执行的方法。具体命令&#xff08;Concrete Command&#xff09;角色&#xff1a;具体的命令&#xff0c;实现命令接口&#xff1b;通常会持有…...

SpringCloud-Feign

Spring Cloud中集成Feign (只是笔记而已 其中有点命名啥的不对应&#xff0c;搜到了就划走吧) Feign--[feɪn]&#xff1a;Web 服务客户端&#xff0c;能够简化 HTTP 接口的调用。 没有Feign的之前服务提供者 package com.springcloudprovide.controller;import com.springclo…...

XCP实战系列介绍08-基于Vehicle Spy进行XCP测量的工程配置详解

本文框架 1.概述2. 工程配置步骤2.1 创建MEP工程2.1.1 添加A2L文件2.1.2 CAN收发ID配置2.2 MEP属性设置2.2.1 ECU属性设置2.2.2 MEP的Security设置2.3 DAQ设置2.3.1创建DAQ2.3.2 list中测量及标定量的添加和设置2.3.3 设置DAQ list中变量的event1.概述 在前面一篇文章《看了就…...

JVM调优几款好用的内存分析工具

对于高并发访问量的电商、物联网、金融、社交等系统来说&#xff0c;JVM内存优化是非常有必要的&#xff0c;可以提高系统的吞吐量和性能。通常调优的首选方式是减少FGC次数或者FGC时间&#xff0c;以避免系统过多地暂停。FGC达到理想值后&#xff0c;比如一天或者两天触发一次…...

Vue中路由缓存及activated与deactivated的详解

目录前言一&#xff0c;路由缓存1.1 引子1.2 路由缓存的方法1.2.1 keep-alive1.2.2 keep-alive标签中的include属性1.2.3 include中多组件的配置二&#xff0c;activated与deactivated2.1 引子2.2 介绍activated与deactivated2.3 解决需求三&#xff0c;整体代码总结前言 在Vu…...

【漏洞复现】phpStudy 小皮 Windows面板 RCE漏洞

文章目录前言一、漏洞描述二、漏洞复现前言 本篇文章仅用于漏洞复现研究和学习&#xff0c;切勿从事非法攻击行为&#xff0c;切记&#xff01; 一、漏洞描述 Phpstudy小皮面板存在RCE漏洞&#xff0c;通过分析和复现方式发现其实本质上是一个存储型XSS漏洞导致的RCE。通过系…...

跨域小样本系列2:常用数据集与任务设定详解

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 带你学习跨域小样本系列1-简介篇 跨域小样本系列2-常用数据集与任务设定详解&#xff08;本篇&#xff09; 跨域小样本系列3&#xff1a;元学习方法解决CDFSL以及两篇SOTA论文讲解 跨域小样本系列4&#xf…...

HTML浪漫动态表白代码+音乐(附源码)

HTML浪漫表白求爱(附源码)&#xff0c;内含4款浪漫的表白源码&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;求爱场景&#xff0c;下载直接使用。 直接上源码吧 一.红色爱心 1.效果 实际效果是动态的哦 2.源码 复制粘贴即可运行哦 <!DOCTYPE…...

The last packet sent successfully to the server was 0 milliseconds ago. 解决办法

mybatis-generator-maven-plugin插件The last packet sent successfully to the server was 0 milliseconds agoYou must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to…...

分布式高级篇1 —— 全文检索

Elasticsearch Elasticsearch简介一、基本概念1、index(索引)2、Type(类型)3、Document(文档)4、倒排索引二、Docker 安装 EL1、拉取镜像2、创建实例三、初步探索1、_cat2、索引一个文档(保存)3、查询文档3、更新文档4、删除文档&索引5、_bulk 批量 AP6、样本测试数据四、进…...

集成电路开发及应用-模拟数字部分专栏目录

三角波发生器电路图分析_XMJYBY的博客-CSDN博客运算放大器正反馈负反馈判别法_如何理解运算放大器的反馈机制,分哪几种_XMJYBY的博客-CSDN博客运算放大器实现多路同向反向加减运算电路公式推导(一)_反向减法运算电路_XMJYBY的博客-CSDN博客运算放大器实现多路同向反向加减运算电…...

ios使用SARUnArchiveANY 解压rar文件(oc和swift版本)

SARUnArchiveANY简介 开源库网址&#xff1a; https://github.com/saru2020/SARUnArchiveANY 简介&#xff1a; 一个iOS的非常有用的库来解压zip&#xff0c;.rar&#xff0c;7z文件。 他是以下库的简单集成&#xff1a; UnrarKitSSZipArchiveLzmaSDKObjC (7z) 需要注意的是…...

【Python学习笔记】21.Python3 函数(2)

前言 本章介绍调用函数时可使用的正式参数。 参数 以下是调用函数时可使用的正式参数类型&#xff1a; 必需参数关键字参数默认参数不定长参数 必需参数 必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 调用 printme() 函数&#xff0c;你必须传入一…...

day57回文子串_最长回文子序列

力扣647.回文子串 题目链接&#xff1a;https://leetcode.cn/problems/palindromic-substrings/ 思路 dp数组含义 dp[i][j]:以s[i]为开头&#xff0c;s[j]为结尾的子串是否是回文子串 递推公式 子串范围为[i,j]&#xff0c;当s[i]s[j]时&#xff0c;有三种情况&#xff1…...

Element UI框架学习篇(二)

Element UI框架学习篇(二) 1 整体布局 1.1 前提说明 el-container标签里面的标签默认是从左往右排列,若想要从上往下排列,只需要写el-header或者el-footer就行了 <el-container>&#xff1a;外层容器 <el-header>&#xff1a;顶栏容器。 <el-aside>&#…...

【C++】类与对象(上)

文章目录一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装①访问限定符②封装五、类的作用域六、类的实例化七、类对象模型①如何计算类对象大小②类对象的存储方式③结构体中内存对齐规则八、this指针①this指针的引出②this指针的特性一、面…...

Leetcode.1797 设计一个验证系统

题目链接 Leetcode.1797 设计一个验证系统 Rating : 1534 题目描述 你需要设计一个包含验证码的验证系统。每一次验证中&#xff0c;用户会收到一个新的验证码&#xff0c;这个验证码在 currentTime时刻之后 timeToLive秒过期。如果验证码被更新了&#xff0c;那么它会在 curr…...

Kaldi - 数据文件准备

文章目录数据文件准备wav.scputt2spkspk2utttext相关代码根据文件生成 utt2spk 和 wav.scputt2spk -- spk2utt 转换数据文件准备 在训练/解码中&#xff1a; 有三个文件是必要的&#xff1a; wav.scp 语音编号 – 路径信息utt2spk 语音编号 – 说话人编号spk2utt 说话人编号 …...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...