自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android 逆向

ApkScan-PKID1、Android端配置 friday-server:2、脱壳。

2024-05-11 18:18:47 246

原创 Transformer 中的 Pre-LN 与 Post-LN

文献“On Layer Normalization in the Transformer Architecture”中提出了一种 pre-LN 的层标准化方法,即把 LN 加在残差连接residual之前,Transformer中原始的层标准化为post-LN,即把 LN 在残差连接residual之后,这样能够提升 Transformer 的稳定性。Post-LN 的方式如下图所示。Pre-LN 的方式如下图所示。Pre-LN 是将每个子层的结束位置的层标准化提前到了该层的开始位置。

2024-04-13 23:39:16 241

原创 Transformer中的自注意力机制计算过程分析

自注意力机制(Self-Attention)顾名思义就是关注单个序列内部元素之间的相关性,不仅可以用于 seq2seq 的机器翻译模型,还能用于情感分析、内容提取等场景。因此分析网络如何表达出“单个序列”与“内部元素”之间的相关性这一问题可以回答开头所述的大部分疑问。

2024-03-02 20:13:40 713

原创 IEEE 802.11a协议

在调制时,速率位、保留位、长度位、奇偶位以及值为0的6位尾比特构成一个单独的OFDM符号,用SIGNAL段表示。信号段采用的是BPSK调制,1/2的编码速率。其中,信号段的速率位以及长度位决定着数据的比特率,进而决定其调制方式,编码速率等一系列的参数值。OFDM 的前导训练序列(Preamble training symbol)包括10个短训练符号(STS,用于自动增益控制、分集选择、定时捕获、粗频偏估计)和2个长训练符号(LTS,用于信道估计和细频偏估计),如图2。GR-OFDM算是一个简化版的协议。

2024-03-02 18:10:46 987

原创 元学习(meta-learning)的通俗解释

还以目标检测为例,仍然拿一个很大的数据集来训练模型,而 meta-learning 的目标不是让模型在没见过的图片中学会分辨训练集中提到过的类别,而是让模型学会分辨事物的异同,学会分辨这两者是相同的东西还是不同的东西,当模型学会分辨异同之后再在具体的分类任务中使用极少的数据集训练很少的次数即可达到甚至超越传统目标检测训练范式的效果(这种方式也称为。以上是元学习在目标检测方面的一种应用,通过元学习训练模型提取不同种类图片的特征,然后在这个预训练的模型的基础上实现快速辨别新的图片种类。元学习可以用来学算法。

2024-02-26 00:12:43 3394

原创 Transformer 学习路线说明

模型的代码可以在博客[9]里找到,此博客根据文献[3]的内容撰写了代码,而且是根据文献每一段的内容附上相应代码,因此可以清晰知道每一部分代码实现了什么功能,对应原文什么模块。Transformer 与文献[1, 2]中的注意力机制的原理相同但实现方式有区别,[1, 2]中的注意力机制是依赖于类 RNN 网络的隐层输出得到的,而 Transformer 中的自注意力是直接从输入数据中计算得出的。文献[6] 对近些年来产生的 Transformer 模型进行了分类,但主要关注attention模块的效率问题。

2024-02-25 23:55:23 566

原创 MATLAB 矩阵数据可视化imagesc 以及 如何多图共用一个 colorbar

当遇到需要查看一个二维矩阵数据中值的大小分布情况时可以使用 MATLAB 把矩阵以图像的形式展现出来,这样更直观。MATLAB 的可视化函数之一是,还有其他的方法,这里只介绍下 imagesc。

2023-01-05 17:30:25 10707 4

原创 内网穿透配置(FRP)

如果直接将服务器暴露到公网上可能会有安全隐患,如果别人知道了公网中转站的 ip 和转接端口,就相当于知道了内网服务器的 ssh 端口,如果知道密码的话就可以随意登陆了。)中,也就是说家里网络设备上层的公网IP不同于学校服务器上层的公网IP,因此这种情况下就不能仅仅使用 SSH 来远程连接学校的服务器了,还需要借助一种叫做内网穿透的技术实现连接。这里运行 frps 的云服务器的用户名为 admin,frps 的路径为 /home/admin/frp/frps,因此将原始的。

2022-11-14 23:19:52 4448

原创 Ubuntu 远程连接使用 conda 报错: EnvironmentNotWritableError (多用户场景)

在服务器(Ubuntu20)多用户的前提下,当我尝试作为其中一个用户远程连接服务器运行 python 代码时,发现使用 conda 命令安装一个 python 包,但是在我使用。参数必须要加上,代表递归地对 anaconda3 文件夹里的所有子文件和文件夹赋予权限。否则只是对 anaconda3 这个单独的文件夹赋予权限,而对其内部的文件作用。对管理员用户的 anaconda3 文件夹执行以下命令(需要使用管理员账户来操作)对管理员用户的 anaconda3 文件夹做修改。

2022-11-11 21:14:28 1561

原创 远程登陆Ubuntu服务器anaconda的使用问题(多用户)

远程登录Ubuntu的新用户在使用 conda 命令时,可能会遇到找不到 conda 命令的情况,因此在多用户使用 anaconda 的情况下,需要提前在 Ubuntu 服务器上做一下 anaconda 的配置。保存退出,然后 source 一下这个文件夹,这样就将anaconda 添加到全局的环境变量中了。每条信息最后一个冒号后面的就是当前用户的 shell 类型,一般默认都是 bash。按 i 键编辑,在文件最后添加以下语句。按 ESC 键退出编辑,然后依次输入。可以使用以下命令查看当前的环境变量。

2022-11-09 23:04:50 1547 2

原创 Ubuntu 多用户管理及 SSH 远程连接

个人感觉 useradd 用起来挺不方便的,我在尝试使用 useradd 创建用户的时候遇到了挺多问题,比如使用 -p 参数设置的密码在远程连接时不能用,必须使用 passwd 命令设置新的密码才能用,有知道为什么的朋友欢迎留言讨论,还有 useradd 的参数种类太多看的头大。用户组一般是放置具有相同访问权限的用户,便于管理,当然,你放权限不同的用户也不是不行,怎么方便怎么来。username 是你需要连接的那个用户的名字,ip 是用户所在主机的 ip 地址,同一台主机的用户公用同一个 ip 地址。

2022-11-08 23:24:09 6335

原创 SSH远程连接实例

本实例是在校园网的环境中,使用SSH在个人电脑(Win10)中远程连接实验室的服务器(Ubuntu20)。前提是个人电脑和实验室的服务器都连上了校园网,即处在同一个局域网(内网)中。其他场景下的SSH使用方法都大同小异。

2022-11-05 18:04:54 2407 2

原创 C++11 thread 在 Windows 系统中无法使用问题解决

C++11 thread类在windows上无法使用。std 没有成员 thread、thread not member of std_Cris6866的博客-CSDN博客_std没有成员thread。然后在实际使用时需要将相应的的头文件换成上述显示的头文件的名字,比如原来的。最近在Windows10上使用C++11的 thread 时遇到了。我Windows10上的 C++ 编译器用的时。头文件,这种问题在Linux上就没有出现。,然后我这就正常了,具体的使用方法是一样的。的问题,但是我已经包含了。

2022-09-21 11:30:25 3383 2

原创 C++ vector数组实现多级排序—使用sort()函数

C++ 多级排序可以借用 sort() 函数(在头文件 中)的第三个参数实现。

2022-08-27 11:52:05 2763

原创 Linux SocketCAN 编程(C++,启用多线程接收)

SocketCAN 采用常用的 Socket 网络编程接口来封装 CAN 协议,可以使开发人员几乎无压力地使用 CAN。SocketCAN 编程的思路与 Socket 网络编程几乎一样。socket() 函数返回一个 socketcan 的句柄,后续的操作都是基于这个句柄的。第一个参数第二个参数指定了 socket 的类型。常用的有第三个参数表示指定的协议。常用的协议有。......

2022-08-18 12:04:23 12310 4

原创 Ubuntu 实现shell文件的开机运行(从原理到实现)

总之,在确定你要开机启动哪个 shell 文件的前提下,只需两个步骤:(1)在脚本中添加一个Install 段(2)在/etc目录下新建rc.local脚本,写入开机启动的 shell 命令,并使用 chmod 赋予其执行权限参考文献Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local) - 走看看 (zoukankan.com)Linux初始化系统init和systemd介绍_哔哩哔哩_bilibili。..................

2022-08-03 21:40:30 3692 1

原创 ROS 节点初始化步骤、topic/service创建及使用

/service回调函数mySrvInfotestmySrvInfo{...}//topic订阅回调函数myMsgInfo{...}//主函数{rosrosrosrosrosspin();return0;}

2022-07-29 16:10:47 1647

原创 ROS 环境使用第三方动态链接库(.so)文件

首先,创建ROS包的过程就略过去了,我在自己写的的ROS节点对应的cpp源文件中调用了第三方动态链接库的API接口,API接口都定义在相应的头文件中了,这些就按部就班的调用就行。的使用说明,由于需要集成到ROS中,这里主要记录下在ROS中使用第三方链接库的方法。最近调试了一款设备,设备厂家没有给驱动的源码,而是给了一个。中加入相应的动态连接库的名字,注意去点前缀。,需要调用的第三方动态链接库的名字叫。语句来包含动态链接库的位置,然后在。我在使用过程中遇到的最大的问题就是。的问题,因为自动生成的。......

2022-07-28 18:58:59 2371

原创 把Linux下外设的USB端口号映射到固定的名字

近期调试了一款云台,控制方面需要用到串口通信,调试过程中发现了一个问题,就是Linux分配给外设的USB端口号与端口的上电顺序有关,这就导致如果需要USB端口连接的外设多了之后,每次分配至云台的端口号不一致,因此就需要将云台的USB端口映射为一个固定的名字,这样每次程序调用这个固定的名字即可,就不需要每次根据实际的端口号改代码了。红色框中现实的就是我的云台设备的USB信息,如果不知道自己的硬件设备的信息是哪个,可以分别在插拔的状态下使用lsusb命令,然后找不同就好啦~.........

2022-07-18 15:44:47 1467

原创 ROS 创建工作空间流程

本文以移植代码为例说明。目标是把一款云台SDK中的ROS代码部分抠出来移植到自己创建的工作空间中。记录下大致的流程。目录1、创建工作空间2、编译工作空间(可选)3、设置环境变量(可选)4、创建功能包5、拷贝代码、修改 CMakeLists.txt 文件6、编译功能包 7、启用节点pantilt_ws 文件夹是创建的工作空间,src 文件夹放置后面创建的功能包的源码。catkin_init_workspace 命令用来初始化工作空间,这个命令会在 src 文件夹中生成一个 CMakeLists.txt

2022-07-14 18:17:00 4646

原创 Robotics XM430-W350 云台电机使用记录

XM430-W350 是加拿大 Trossen Robotics 公司生产的一种伺服舵机。公司给这种电机配套了自研的控制协议以及开发 SDK 例程 Dynamixel SDK,此处记录下基于ROS的开发例程的使用方法,主要目的是用来控制2自由度云台。XM430-W350 伺服舵机的数据手册链接:XM430-W350-T/RDynamixel SDK 的介绍及使用方法链接:DYNAMIXEL SDKDynamixel SDK 的源码链接:https://github.com/ROBOTIS-GIT/Dynam

2022-07-13 21:10:59 905

原创 Linux 串口编程学习记录(termios.h)

目录0、Linux 串口编程简述1、open() / close() 函数open() 函数参数说明:close() 函数参数说明2、termios 结构体3、tcsetattr() / tcgetatt()函数4、tcflush() 函数5、ioctl() 函数6、write()/read() 函数Linux 上 C++ 的串口编程主要 API 都定义在了在头文件 termios.h 中。Linux 串口与单片机串口本质上是一样的,在初始化阶段都是要设置波特率、停止位、奇偶校验位等属性的。C++ Linu

2022-07-11 17:50:01 4690

原创 通过串口波特率计算数据传输速率(每秒字节数)

这个是个古老的问题。。上次用串口还是本科时候,最近面试被问到了这个问题竟然整蒙了,大致是:面试老师问:9600的波特率每秒可以传输多少个字节?我:e...直接除以8...emmm是 1200 Byte 吧(感觉哪里不对劲,但又理直气壮感觉是对的)面试官表示怀疑....我知道应该不是这么算的,应该得算上开始位之类的。。懵逼地进入了下一个问题 T_T正片开始:由波特率怎么计算每秒传输的字节数呢?在信息传输通道中,携带数据信息的信号单元叫码元,单位时间内通过信道传输的码元数称为码元传输速率,简称波特率,其单位是波

2022-06-15 21:58:37 12036 3

原创 C++ 中cin的输入原理及字符串(string、char[])输入问题

C++中常用的输入方式为 cin 。通过 cin 来获取字符串是常用的操作,但是字符串中往往可能会包含空格等空白字符,而在一般的输入场景中,由于不能通过键盘输入空字符 '\0'(在存储中,字符串都以空字符 '\0' 结尾),因此 cin 使用空白字符(空格、制表符和换行符)来确定字符串的结束位置,因此想要输入空格必须得修改输入的方式。也就是说,这种情况下一次只能完成一个单词的输入,其后的单词都会被忽略掉。getline() / get() 函数都可以接收一行字符串输入,并以回车作为输入的结尾。区别就是

2022-06-09 22:11:55 17589 2

原创 C++ 无序关联容器 unordered_map 以及 unordered_set

之前说过的 map 与 set 在存储上都是有序的,即是按照关键字的值排序的:如果键的类型是数字,则按照数字大小进行排序,如果是 string,则按照字典序进行排序。C++新标准定义了四种无序关联容器(unordered_map、unordered_set、unordered_multimap、unordered_multiset),这些容器不再是使用比较运算符来组织元素,而是使用一个哈希函数和关键字类型的==运算符。在关键字类型的元素没有明显的序关系的情况下,无序容器是非常有用的。在某些应用中,维护元素的

2022-06-05 15:45:56 372

原创 C++ 动态内存分配和智能指针 share_ptr/unique_ptr

目录1、动态对象以及new/delete2、智能指针C++除了在代码编译时创建的自动(auto)和静态(static)对象外,还支持运行过程中动态分配对象,动态对象只有显式地被释放时,这些对象才会销毁。C++中使用 new/delete 运算符完成动态内存管理,new在动态空间中为对象分配空间并返回指向该对象的指针,delete接受一个动态对象指针,销毁该对象,并释放与之关联的内存。传递给delete的指针必须指向动态分配的内存,或者是一个空指针,释放一块非new分配的内存,或者将相同的指针释放多次,其行为

2022-06-05 14:16:38 772

原创 进程、线程、协程、并发、并行、IO多路复用

目录一、什么是IO操作二、进程、线程、协程1、进程是资源分配的基本单位2、线程是任务调度的基本单位3、协程—由线程创建并全权负责的小弟三、并行、并发及其与CPU内核数的关系1、理解并行与并发的区别2、进程、线程与CPU核数之间的关系3、同一个进程里的线程可以并行执行吗(满足条件时可以)四、IO多路复用五、参考文(zi)献(liao)我竟然妄想在小小的篇幅下把这四件事讲明白,离谱,但又不太离谱~在多线程、多进程、并行、并发这几个概念中,有很多知识点容易让..

2022-05-16 23:00:28 997

原创 pandas 处理excel表格数据的常用方法(python)

最近助教改作业导出的成绩表格跟老师给的名单顺序不一致,脑壳一亮就用pandas写了个脚本自动吧原始导出的成绩誊写到老师给的名单中了哈哈哈,这里就记录下用到的pandas处理excel的常用方式。(注意:只适用于.xlsx类型的文件)1、读取xlsx表格原始内容如下:1、读取第n个Sheet(子表,在左下方可以查看或增删子表)的数据import pandas as pd# 每次都需要修改的路径path = "test.xlsx"# sheet_name默认为0,即读取第一个

2022-05-16 15:42:58 24995 2

原创 python matplotlib绘图总结

官网教程:Plot types — Matplotlib 3.5.2 documentation1、画线a、常规画线: matplotlib.pyplot.plot()该部分内容包含:(常规画线、颜色、线条风格、坐标轴标签、一图多线、图例)的设置方法。定义:plot(*args, scalex=True, scaley=True, data=None, **kwargs)用法:对于一般的函数 y=f(x),可以直接绘制:plt.plot(x, y),当省略x坐标时plt....

2022-05-13 12:13:06 3045 1

原创 上传本地项目代码到GitHub的方法

预备知识:有一个GitHub账号,然后知道怎么进GitHub网页。之前往GitHub上传代码都是现场百度找指令操作的,从来不记,这次干脆做个记录当个笔记吧。1、首先,在GitHub上创建一个新的repositories仓库,如下填入仓库名、有关描述、选择公开/私有、是否添加README文件、许可类型等2、创建完成后点进刚创建的仓库,找到仓库地址,后面上传代码时会用到。3、打开Git工具(Git工具下载地址:Git for Windows)打开 git bash,cd 到项

2022-05-07 21:27:49 3609

原创 VSCode:ERROR: Unable to start debugging. Unexpected ...... “-exec-run“. During ......code 0xc0000139

笔试前夕遇到这个问题真令人头大。。。(T...T)!先说结论:在系统环境变量 path 设置中,mingw64\bin 中的某个文件与原来安装过的anaconda的环境变量D:\Anaconda\Library\mingw-w64\bin 中的文件冲突了,去掉环境变量 path 中的D:\Anaconda\Library\mingw-w64\bin 就行了。(我是应为 anaconda,还有人是 QT 的原因,详情看文末)全部报错信息如下:ERROR: Unable to start...

2022-05-01 00:17:10 5281 8

原创 python 数组的排列与组合:combinations 与 permutations

combinations 函数在python 的 itertools 库中,因此在使用前需要 import itertools。combinations 函数的作用就是罗列出所有数组中 n 个元素的组合,并返回一个可迭代对象例子:import itertoolsnums = [3, 2, 1, 0]a = itertools.combinations(nums, 3) # 枚举出由列表 nums 中3个元素组成的所有可能的集合for i in a: print(i)"""

2022-04-25 20:39:57 2738

原创 pytorch 层标准化 LayerNorm 的用法

目录1、为什么要标准化(理解的直接跳过到这部分)2、LayerNorm 解释3、举例-只对最后 1 个维度进行标准化4、举例-对最后 D 个维度进行标准化1、为什么要标准化(理解的直接跳过到这部分)Batch Normalization 的作用就是把神经元在经过非线性函数映射后向取值区间极限饱和区靠拢的输入分布强行拉回到均值为 0 方差为 1 的比较标准的正态分布的区间,使得非线性变换函数的输入值落入激活函数比较敏感的区域,这样会让让梯度变大,由此避免了梯度消失的问题。而梯度变大..

2022-04-19 18:19:11 27542 2

原创 numpy 多级排序 :lexsort 函数详解

import numpy as npa = [[3, 3, 8], [6, 9, 7], [3, 3, 2]]b = np.array(a)"""step-1、首先按照第一列数值升序顺序对每行的位置进行重排, 第一行有两个值相同, 转到step-2 [[3, 3, 8], [[3, 3, 8], [6, 9, 7], --> [3, 3, 2], [3, 3, 2..

2022-04-15 00:24:33 13493 3

原创 python 字典dict常用操作总结

字典是一个包含了键-值对数据的集合。1、创建字典可以直接使用一对花括号或者 dict() 创建一个字典类型的数据。a = {}a = dict()2、添加/修改/删除字典元素添加元素的方式有两类,一种是直接使用方括号添加(类似于访问元素),另外一种是通过内置函数添加。删除元素使用 del 或 pop。以下是添加/修改/删除新元素的方式(以武汉七校的特点为例)a、[ ]方括号方法添加/修改,省时省力又省心。若 key 已存在则修改该键值,若不存在则创建相应的键值对b、set

2022-04-09 16:18:40 3406

原创 python 列表list用法总结

目录1、创建空列表2、索引、切片3、加入元素4、删除、清空操作5、列表长度及最值6、运算符和表达式7、值的索引8、反转及排序9、统计指定元素出现的次数10、列表相互赋值(理解浅拷贝)python 中的列表(list)类型类似于 C++ 中的 vector 类型,不过列表的功能更多。1、创建空列表直接使用一对空的方括号就可以创建空列表alist = []列表中的元素类型不必都相同,比如下面的例子中,一个列表中同时含有字符串、数字、元组、列表类型的数

2022-04-09 12:15:18 4601

原创 python 输入 input() 与输出 print()

python 使用 input() 获取用户的输入,该操作属于无脑式输入,不管在键盘上敲入什么内容都会当作字符串类型返回,也就是说如果想输入数字,那么需要配合eval()、int()、float()函数进行转换。输入过程以敲下回车键为结束标志。1、输入字符串字符串长啥样就直接无脑输入就行a_str = input("随便输入一个字符串试试:")print(a_str)"""运行结果:随便输入一个字符串试试:好的 我就随便输入了好的 我就随便输入了"""2、输入数字输..

2022-04-09 11:06:25 2506

原创 python 字符串操作总结

目录1、内置字符串处理函数2、常用字符串处理方法1、内置字符串处理函数s = "这是一个字符串"c = '哈'x = 217041、len(s) : 返回字符串长度 len(s) = 72、str(x) : 返回任意类型 x 对应的字符串形式 str(x) = "21704"3、chr(x) : 返回 Unicode 码 x 对应的单字符 chr(x) = 哈4、ord(c) : 返回单字符表示的 Unicode 编码 ord(c) = 217045、h

2022-04-08 20:59:18 1698

原创 python 随机数 random 库的使用总结

目录1、random 库中的常用随机数生成函数2、一些用法举例3、随机数种子 seed(a) 的理解与使用random 库的主要目的就是生成随机数。1、random 库中的常用随机数生成函数from random import *1、seed(a=None) # 初始化随机数种子,默认值为当前系统的时间2、random() # 生成一个 [0, 1.0) 之间的随机小数3、randint(a, b) # 生成一个 [a, b] 之间的随机整数4、getr

2022-04-08 16:46:24 3003

原创 python Counter() 函数

目录1、以统计列表中的词频为例2、寻找出现次数最多的 k 个数刷 leetcode 时发现了可以很方便地统计词频的 Counter() 函数,有了这个函数就不用手动的使用 for 循环来手动统计词频啦!Counter() 是 collections 库中的一个函数,可以用来统计一个 python 列表、字符串、元组等可迭代对象中每个元素出现的次数,并返回一个字典。可以看下常用的 Counter() 例子:1、以统计列表中的词频为例列表中含有一串整数,要统计每个数出现的次数,可以像下.

2022-04-07 21:33:44 34818

海参/海胆数据集分享

该数据集是我手动标定的一个较小的海参(165张图片)与海胆(225张图片)的VOC格式数据集,用于深度学习网络的训练。由于该类数据集资源较少,所以欢迎大家一起共享资源,我们共同学习,共同进步!(图片均来源于网络,侵删)

2020-05-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除