- 博客(39)
- 资源 (3)
- 收藏
- 关注
原创 transformer(三) 位置编码以及旋转位置编码RoPE详解
本文介绍了Transformer模型中位置编码的必要性及两种主要实现方式。首先指出Transformer缺乏序列顺序信息,因此需要位置编码来补充单词位置信息。传统绝对位置编码使用正弦余弦函数生成固定位置向量,但存在长文本位置信息不足的问题。随后重点介绍了旋转位置编码(RoPE),它通过旋转矩阵将相对位置信息融入自注意力计算,使内积结果仅与相对位置相关。RoPE的优势在于能更好学习token间的相对位置关系,尤其适合处理长文本序列。相比绝对位置编码,RoPE通过相对位置信息提高了模型性能,在短文本训练后只需少
2025-11-24 23:50:46
622
原创 为什么分类模型使用交叉熵损失函数而不是均方误差?
在深度学习和机器学习领域,为模型选择正确的损失函数是至关重要的。对于回归问题,我们通常使用均方误差(Mean Squared Error, MSE)作为损失函数。然而,在处理分类问题时,交叉熵(Cross-Entropy, CE)损失函数却是更常见的选择。本篇文章将深入探讨为什么在分类任务中我们更倾向于使用交叉熵而不是均方误差。
2025-11-20 08:00:00
546
原创 为什么Transformer使用LayerNorm而不是BatchNorm?
摘要:本文对比了批量标准化(BN)和层标准化(LN)在深度学习中的差异及其适用场景。BN通过mini-batch的统计量进行特征维度标准化,能有效缓解内部协变量偏移问题,但难以处理NLP中的变长序列。而LN则在单个样本内部进行标准化,天然适配变长数据且不受batch size影响。Transformer选择LN主要基于三点:1)适应NLP变长序列特性;2)对小batch size不敏感;3)提供更稳定的训练动态。LN的样本级标准化方式更适合处理文本数据的独特性,这是其成为Transformer标配标准化方法
2025-11-19 08:00:00
917
原创 transformer(二) 多头注意力简介以及变种
本文介绍了自注意力机制的几种变种。首先解释标准自注意力机制的计算过程,包括QKV矩阵的获取和注意力矩阵的计算。然后介绍稀疏注意力,它通过限制每个位置的关注范围(如前k个位置)将复杂度从O(n²)降至O(kn)。接着讨论多头注意力,通过多个并行的注意力头捕捉不同特征。最后介绍两种多头变体:分组注意力(同组Q共享KV)和多查询注意力(所有Q共享KV),这两种方法都能显著降低计算量。这些变体在保持模型性能的同时提高了计算效率。
2025-11-18 00:55:10
242
原创 transformer 教程(一) qkv矩阵介绍以及为什么除以根号d推导
自注意力机制是Transformer模型的核心组件,它通过查询(Q)、键(K)、值(V)三个向量实现序列元素间的动态关联计算。具体过程包括:将输入嵌入向量与学习得到的权重矩阵相乘生成Q、K、V向量;通过点积计算注意力分数并进行√dk缩放以防止因高维导致的数值不稳定;最后对分数进行Softmax归一化并加权求和得到输出。其中,除以√d是关键技术,它能将点积结果的方差控制在1,避免梯度爆炸问题,确保模型训练的稳定性。这种机制使模型能够动态关注输入序列中的相关信息。
2025-11-16 14:12:13
748
原创 K折交叉验证(K-Fold Cross-Validation)深度解析
K折交叉验证(K-Fold CV)是一种可靠的模型评估方法,通过系统交换训练集和验证集来降低评估偶然性,并最大化利用数据。其核心目的是评估模型泛化能力和选择超参数,而非直接生成最终模型。K折CV流程包括数据随机划分、循环训练与验证以及性能汇总。对于类别不均衡数据,推荐使用分层K折CV,它能保持每一折的类别比例与原始数据集一致,从而提供更稳定的评估结果。最终确定最佳配置后,应在全部训练数据上重新训练模型用于预测部署。
2025-11-01 10:29:49
832
原创 Visual Studio 编译 onnxruntime 1.14.1 更低版本兼容Win7
Visual Studio 编译 onnxruntime 1.14.1 更低版本兼容Win7
2025-02-14 12:00:56
940
原创 vmware网卡的网络连接模式记录
文章目录1. 定义两个概念:1.1 物理机/宿主机1.2 虚拟机:2. 网卡模式解释2.1 桥接模式2.2 NAT模式2.3 仅主机模式2.4 自定义模式3. 额外说明1. 定义两个概念:1.1 物理机/宿主机就是我们自己的这台电脑, 是实实在在存在的物理机, 因为安装了vmware可以装其他的虚拟机, 固有宿主机的意思1.2 虚拟机:也就是在vmware中使用镜像虚拟化出来的机器叫虚拟机.2. 网卡模式解释2.1 桥接模式此时虚拟机和物理机在同一个网络下, 也就是在同一个网段下面
2021-07-11 11:24:37
255
原创 车牌字符检测
1.问题描述对于一张已经检测并且经过矫正的车牌,为了能够识别出车牌上的字母,先将每个字符检测出来,然后对每个字符进行识别。本博客主要是讲述如何将字符检测出来,暂时不涉及字符的识别。利用的是传统的图像处理方法,基于连通区域的算法。2.解决方法概述对于一张车牌图片,首先转灰度图,然后利用阈值将图像变成二值图像。也就是像素值只有0和1(或者0和255)的图像。因为直接二值化后会有很多噪音,会出现字符之间会有连接在一起的情况,或者字符与图像边缘连接在一起的情况,合理利用形态学的开操作,去掉大部分的噪
2020-05-17 21:49:59
2538
原创 C++字符串的处理
目录字符串初始化字符串函数字符串大小,是否为空拼接插入找到子串位置字符串的遍历字符串的替换字符串初始化这是头文件#include <iostream>using namespace std;string s;// 空串长度为0cout << s.size() << endl;string s1 = "string...
2019-11-03 15:03:31
588
原创 Android调试工具ADB使用介绍
ADB简介ADB全称是android debug bridge(安卓调试桥),是一个命令行工具,我们通过adb命令可以直接与android设备进行通信利用adb命令我们可以模拟用户的操作,方便我们的调试过程.ADB的使用1.配置ADB与连接设备1.1配置adb环境变量默认环境下面可能没有adb,需要配置环境变量假如 $Andorid_SDK为你的sdk目录,那么adb在sdk...
2019-09-25 22:19:35
1033
原创 Android中文件存储路径
参考博客彻底搞懂Android文件存储—内部存储,外部存储以及各种存储路径解惑概览图路径旁边的 @link标志的 是他们的该路径获取方法/** * Android的存储结构 * * 1.内部存储(非内存): * /data {@link Environment#getDataDirectory()} * /data ...
2019-09-24 16:46:18
1239
原创 Java的有趣的char类型
参考文章Unicode中的数学符号我最初以为Java的char类型是占1个字节的,后来发现不是,目测是要占用两个字节显示基本字符我们一般的需求基本都是显示ASCII中有的字符如 1 2 3 4 a b c …但是输出这样的效果?22=4,23=82^2=4,2^3=822=4,23=8显示特殊字符其实java中的char显示的是unicode编码的字符,只要是unicode编...
2019-08-30 17:02:18
614
原创 Android事件传递机制
参考博客与书籍android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)Android高级进阶百度网盘1.概述1.1什么是触摸事件我们每对屏幕的一次操作(最常见就是点击,移动,和松开)都会产生触摸事件,每次产生的事件都会包含大量的信息(触摸点相对于当前View的x,y值,相对当前容器的x,y值,当前触摸的类型等)这些信息都被封装在一个MotionEvent类中...
2019-08-01 22:13:57
616
原创 矩阵求导
1.布局布局主要分为分子布局和分母布局,在我看来,分子布局就是被积项是一个行向量,分母布局被积项使列向量,而我们大部分情况都是默认一个向量为列向量,所以我们一般的求导都是分母布局,而本文所有的公式都是依照分母布局2.基本公式依我所见,矩阵求导只不过是矩阵的各部分对各个变量分开求导,然后又将分开求导的结果写成矩阵形式规定x为列向量:x=(x1,x2,⋯ ,x...
2019-06-19 16:28:46
6586
原创 Python 图片转数组,二进制互转
前言需要导入以下包,没有的通过pip安装import matplotlib.pyplot as pltimport cv2from PIL import Imagefrom io import BytesIOimport numpy as np1.图片和数组互转# 图片转numpy数组img_path = "images/1.jpg"img_data = cv2.imre...
2019-04-25 10:25:55
13539
1
原创 STM32通用定时器使用详解
1.通用定时器基本介绍通用定时器包括TIM2、TIM3、TIM4和TIM5STM32通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。定时器可以进行定时器基本定时,输出4路PWM,输入捕获,本文利用定时器3展示并介绍这三个功能2.开发环境开发平台:keil5 单片机型号:STM32F...
2018-08-12 09:45:57
80928
21
原创 NVIC 中断优先级管理详解
1.NVIC(内嵌向量中断控制器)NVIC:Nested Vectored Interrupt Controller,STM32系列有84个中断,相对于的开发板STM32F103系统
2018-08-12 01:14:46
14249
1
原创 HC-05蓝牙模块使用教程
一 、模块简介 嵌入式蓝牙串口通讯模块(简称蓝牙模块)具有两种工作模式:命令响应工作模式和自动连接工作模式。 当模块处于命令响应工作模式(或者AT模式)时能才能执行 AT 命令,用户可向模块发送各种 AT 指令,为模块设定控制参数或发布控制命令。(AT指令就是我们PC与一些终端设备(例如蓝牙,WiFi模块)之间进行通信的,配置这些终端设备参数的一套指令。) 在自动连接工作模式下模块又可分为主...
2018-08-05 17:22:14
82290
22
原创 window 下 Android studio 上运行tensorflow
1.开发环境win10 x64 操作系统Android 的 IDE : Android Studio2.问题描述网上大多数教程,都是基于 Linux 的开发,对于window上使用tensorflow的描述较少大部分教程都是使用 bazel 来将tensorflow的源文件编译成so,jar文件,貌似这个工具对于Linux的支持还是不错的(但暂时不支持Linux 32的操作...
2018-06-17 14:38:16
3292
1
原创 一、LCD12864(带字库的)使用教程:
一、LCD12864简介LCD12864液晶显示,也就是屏幕上总共有128*64 ,个点,每个点就只有两种状态亮和不亮我这里使用的就是带字库的,直接可以显示中文,不需要自己去编码,发送数据使用8位并行模式。我这里不介绍怎么显示图片,不介绍指令,知识快速入门得到显示结果 二、引脚介绍1.一共有20个引脚,重要的只有那么几个3~VO就是调节对比度的,相当于调节每个点显示...
2018-05-03 13:55:56
102802
26
翻译 2.WiFi模块ESP8266使用教程
总器件:Esp8266模块,USB转TTL模块,同时电脑上要有”网络调试助手”和”串口助手”一般而言,当我们用USB转TTL模块与Esp8266连接之后,波特率默认为115200 当我们用这个模块箱Esp8266发送数据的时候,串口助手记得勾选”发送新行” 当我们上电之后Esp8266 我们串口助手一直接受到乱码,可能是电压过低,可以考虑将3.3V换成5V我们直接利用AT指...
2018-03-27 00:04:49
34218
2
原创 蓝桥杯串口2应用
#include<reg51.h>/* 串口2只能选定时器2作为波特率发生器 *///注意串口2:RXD2~P1^0,TXD2~P1^1//根据芯片手册说明,在单片机1T模式下(不12分频)串口在模式0(8位USART)波特率 = Sysclk/(65536-[T2H,T2L])/4//这个宏定义就是根据波特率来就算定时器应该设定的初值#define Baud_Rate...
2018-03-26 11:36:16
1163
1
原创 蓝桥杯转接板 定时器2使用
/* 定时器2延时10ms进入中断*///定义寄存器sfr AUXR = 0x8e; //辅助寄存器sfr T2H = 0xD6; //定时器2的高八位寄存器sfr T2L = 0xD7; //定时器2的低八位寄存器sfr IE2 = 0xAF; //中断使能寄存器//T2定时器的初始化void T2_Init(void){ /* AUXR的第三位就是设置 定时器2的...
2018-03-26 00:08:49
1828
原创 关于IIC协议之详解,这里代码主要是用于蓝桥杯的开发板上(针对初学者)
网上关于IIC协议的讲解颇多,但是对于初学者而言,看网上的例程代码总是很模糊,因为总有一两个代码看不懂,而看不到过多的解释,我这里主要是针对自己初学的时候走的许多弯路,将自己的所有所有见解落实到代码上,将每一行代码为什么这么做说清楚,尽量使大家明白,少走弯路IIC协议简介:两线式串行总线,一根数据线SDA和时钟线SCL,下面直接是IIC的时序图,具体每一步的操作和IIC协议的详解我将在代码上给大家...
2018-03-11 00:58:41
2280
1
原创 蓝桥杯单片机之超声波
首先看原理图这里的超声波模块主要是介绍的是蓝桥杯板子上的超声波模块,超声波的原理其实很简单的,就是由于单片机一个引脚连接到发射模块,就可以利用这个引脚来发出一定频率的信号,而在,而在发射模块发射出的超声波被接受回来之后,就会在接收端连接的一极产生下降沿,我们利用一个定时器来计数,记录下来回的时间,然后根据声音传播速度来算出距离,这里超声波的速度和我们声音速度差不多340m/s在使用超声波之前,我们...
2018-03-10 23:59:18
5244
1
原创 蓝桥杯单片机独立按键和矩阵按键
首先看原理图1. 独立按键:注意:我们使用蓝桥杯的板子时候,写代码之前一定要将在板子上将J5的2和3用跳线帽连接起来检测原理:51单片机上电之后P3的8个IO口全部都是高电平,按键一端连接的是GND,按键按下电路接通使得另外一端的电平变成了低电平,也就是说我们只要检测对应的IO口是不是低电平就可以检测按键是否按下。从原理图可以看到,当J5的2和3连接的时候,如果S7被按下,则P30会变成低电平,同...
2018-03-10 23:54:28
4584
1
原创 蓝桥杯动态数码管显示
蓝桥杯数码管原理图:数码管内部就是8个LED组成的,LED的阴极全部连接在一起就是共阴极数码管,反之就是共阳极数码管,这个公共端用一个引脚引出用于位选,由于二极管是单向导电,对共阳极数码管而言,我们想要位选这个数码管就要给位选的引脚高电平,二极管一端已经是高电平了,段选就需要给另外一端一个低电平,共阴极数码管分析思路一样.我们看一下原理图,首先我们看一下动态数码管的原理图,首先说明一下我们蓝桥杯的...
2018-03-10 23:48:08
6819
原创 基于MFC的五子棋(详细介绍,适合初学者)
基于MFC的五子棋游戏开发工具:VC++1. 建立界面,即先建立一个棋盘1.1新建一个MFC工程1.2往这个工程里面添加一些资源,里面的内容暂时可以先不管,等到后面我们再往里面添加东西1.3修改MainFrm.h一些变量,供我们后面使用1.4开始定义变量1.5在”工程名+View.cpp”的文件中开始写我们的方法
2018-01-05 19:40:15
22680
20
翻译 1.WiFi模块ESP8266模块的使用(针对初学者)
虽然esp8266有很多种,但是对于我们初学者来说,只需要有RXD,TXD,VCC,GND四个引脚,简单入门足够了1. 引脚说明:VCC连接正极(有些是3.3V,有些是5V,我的这个是5V),GND连接负极RXD:数据的接收端 (连接单片机或者USB转TTL模块的TXD)TXD:数据的发送端 (连接单片机或者USB转TTL模块的RXD)RST: 复位,低电平有效IO_0:用
2018-01-01 22:11:50
105982
18
Android_Launcher应用开发_示例代码.zip
2019-07-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅