李宏毅机器学习笔记P54——transformer
Transfomer链接:Attention is all you need
Seq2seq model with “Self-attention”RNN缺点:读了a1才能读a2,无法并行CNN替代RNN:多叠几层就能覆盖全部的输入,缺点就是需要的层数更多
Self-AttentionSelf-Attention Layer,输入是一个Sequence,而且输出是同时输出的,可以并行
步骤
q对每一个k做Attention
softmax
softmax后的α-hat与v相乘得到b
实际可以当做是矩阵运算
Multi-head Self-attention (2 heads as example)角标相同的做attention得到的bi,1和bi,2做一个transform得到bihead的数目也可以作为一个可调参数
Positional Encoding前面的self-attention和输入输出的位置无关,所以ai又加了一个ei向量标定位置(这个向量是人为设置的,不是学来的)这里ei和ai直接采用相加,而没有采用拼接,是因为两者实际上在数学上可以被证明是等价的(见下图)
...
李宏毅机器学习笔记P51——attention
Attention视频坐标24:00
Dynamic Conditional Generation让Decode再每一个时间点的input都是不一样的好处:1.Encoder没法只用一个Vector来描述2.Decoder考虑比较需要的Information
例子:
Machine Translation
Attention-basd model计算z0和h1有多match
z1可以是c0在RNN里的输出,也可以是丢进隐藏层后的输出然后继续把z1再算一次match,算softmax
Speech Recognition
Image Caption Generation经过卷积层的输出当做RNN的输入
Memory Network更复杂的版本:抽取information和match的vector是不同的
Neural Turing Machine可以读memory的内容,也可以改memory的内容function的输出是三个vector:k,e,ak的作用是产生attentione的作用是去除旧的memorya的作用是写入新的memory
Tips for Generat ...
欢迎来到御林安全!
CTF 御林 欢迎来到御林安全!1.SIGN_IN
直接输入即可
2.JOIN_QQ_GRP加入QQ群,得到flag
3.Wow_You_Know_how_to_L44t通过下载附件,得到代码
12345678910111213141516171819202122def leet_flag(flag: str, token: str, salt: str) -> str: uid = int(hashlib.sha256((token+salt).encode()).hexdigest(), 16) rcont = flag[len('flag{'):-len('}')] rdlis=[] for i in range(len(rcont)): if rcont[i] in string.ascii_letters: rdlis.append(i) rdseed=(uid+233)*114547%123457 for it in range(4): ...
从向量到傅里叶变换
从向量到傅里叶变换——关于内积与正交分解的思考起因是信号与系统课上讲到傅里叶变换,其中提到了两个复函数的内积的表达式:
其中,我对于g(x)这个函数取共轭的原因感到很迷惑。于是花了两天时间查找了一些资料,对于这个问题有了一些见解。查资料的过程中也带出了一连串的概念,比如函数正交,完备正交函数集等。为了防止自己将来忘掉,我会在下面一一介绍这些东西。
内积实向量内积的定义
这是毋庸置疑的,高中时就学过。
复向量内积的定义 从实数域拓展到了复数域,公式需要做一些调整,要保证复数的内积不会是负数,即保证内积的正定性 比如a(i, i)与b(i, i)做内积,按照实向量的定义算,算出内积的值是-2,这显然是不符合正定性的。所以复向量内积定义为: 其中,b向量的各个维度的值都取了共轭。此时再用此公式计算(i,i)和(i,i)的内积,得到的是2,满足了正定性。(关于这个地方,其实我也不能特别的接受,与身边的同学讨论了很久,只有这么解释还算合理的。相关的定义涉及到了酉空间) (在后续求系数的过程中,我可能又理解了一点为什么内积是这么定义的,下面会说)
离散函数的内积 ...
对于BPSK调制解调的理解(更新中)
对于BPSK调制解调的理解(更新中)我在网上搜索了关于BPSK的流程、代码等,初步实现了仿真。但关于每一步的细节以及为什么要这么做,我还不清楚。所以我打算查找这方面的资料。
流程图
比特流
实际上这里省略了成帧的过程。参考OSI模型的数据链路层,为了使传输的数据更加可靠,判断传输是否有出错更加容易,把需传输的比特流打包成帧来传输,需要加上帧头和帧尾。
帧头和帧尾都采用特定的序列来表示,表示传输了1帧。比较常用的是
[0 1 1 1 1 1 1 0]
这个序列。但需要排除要传输的数据里也存在这一序列的情况,否则接收方就没办法定位帧头和帧尾了。只需要在数据中连续出现5个1之后再加1个0,解码端再去掉就好了。比如要传输
[1 1 0 1 1 1 1 1 1 0 0]
先变成
[1 1 0 1 1 1 1 1 0 1 0 0]
再加上帧头和帧尾
[0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0]
同步传输、异步传输:同步传输在空闲时仍然会发送信号,但仍然表示无数据传输。异 ...
关于dumpbin指令不是内部或外部命令的问题
关于dumpbin指令不是内部或外部命令的问题dumpbin是微软的VC6.0自带的指令,VS环境下有的时候在控制台中输入这个指令的时候会出现无法识别这个指令的情况。
在Visual Studio安装目录下搜索”vcvars32.bat”
直接拖入cmd中
回车执行
此时已经可以正常使用dumpbin指令
利用dll实现跨语言编程(C语言与C#篇)
利用dll实现跨语言编程(C语言与C#篇)一、引言在学校做了一个遥控车的项目。我选择的是用电脑的键盘控制小车的方向,电脑与蓝牙模块进行通信的遥控方式。于是我找到了一个C语言中的库函数,可以检测按键按下事件:
GetAsyncKeyState(int vKey);
12345678910111213141516171819202122232425262728293031#include <stdio.h>#include <Windows.h>int main(){ while (1) { if (GetAsyncKeyState(VK_UP))//按方向键上键 { printf("w"); } if (GetAsyncKeyState(VK_DOWN))//按方向键下键 { printf("s"); } if ...
基于C#的蓝牙串口模块上位机开发
基于C#的蓝牙串口模块上位机开发一、说明本文章讨论使用C#,使个人主机与蓝牙串口模块进行通信。
硬件准备:
蓝牙串口模块(本次使用HC-04)
CH340(USB转TTL)
软件准备:
Visual Studio(安装C#.NET Framework框架)
串口调试助手(微软商店可下载)
操作系统:win10
功能:通过上位机向蓝牙模块发送数据
蓝牙协议:BLE4.0
二、创建工程选择C# 控制台应用(.NET Framework)
三、安装依赖包使用VS自带的NuGet下载工具->NuGet包管理器->管理解决方案的NuGet程序包这里有一个坑,添加的包不是InTheHand.NET.Bluetooth,而是32feet.NET
四、编写程序1.命名空间1234using InTheHand.Net;using InTheHand.Net.Bluetooth;using InTheHand.Net.Sockets;using System.IO;
2.搜索蓝牙设备12345678910111213141516171819bool isFound = ...
stm32 基于CubeMX的DSP库FFT函数封装 V2.0
stm32 基于CubeMX的DSP库FFT函数封装 V2.0一、序言由于在电赛的测量题中FFT的应用十分广泛,每次调库的过程都十分繁琐。为了避免重复操作,实现功能更多,调库更方便,我重构了调用DSP库FFT的代码。本次重构更稳定地实现了更多的功能。
需要注意的是,本次封装只支持官方DSP库的单片机。例程中使用的是stm32F407ZGT6。
二、说明1.功能说明
支持的FFT点数有:16点,32点,64点,128点,256点,512点,1024点,2048点,4096点。
支持多通道的FFT。
能通过对ADC采样数据的FFT运算得出以下数据:
各频率的幅值(单位:V)
基频幅值(单位V)
基频大小(单位:Hz)
各频率的相位(弧度制)
直流分量(单位V)
可以在运行中途改变FFT的采样率、FFT点数。当频率范围很宽时,可以直接调整FFT点数。
UserFFT函数会对目标信号进行三次FFT,分别计算频率、幅值、THD。可以针对不同的需求加不同的窗函数。
2.定义说明
FFT通道结构体12345678910111213typedef struct FFTchannel{ ...