矩阵理论续集
个人写作笔记,如有问题,请不吝赐教!
目录如下:
矩阵求导
矩阵的迹
定义
性质
微分性质
矩阵的范数
矩阵原生范数
向量范数导出的矩阵范数
矩阵范数的导数
向量范数的导数
常见矩阵导数表
上一篇中矩阵迹、矩阵范数的导数部分还留白白斩斩的,这里补充一下。
这里是上一篇的链接
矩阵求导
还差一个最普适的情况——“矩阵对矩阵求导”没有分析,这种情况在神经网络中貌似特别常见。这里对这种情况的公式进行证明,证明方法与证明列向量的方式是完全一样的,不同之处在于,列向量在证明第二项时可以提取公因式产生矩阵分块,而在矩阵对矩阵求导中,不会得到矩阵分块,只能是矩阵直积,具体过程如下。
设矩阵 A∈Cm×l\mathbf{A}\in\mathbb{C}^{m\times l}A∈Cm×l,B∈Cl×n\mathbf{B}\in\mathbb{C}^{l\times n}B∈Cl×n,W∈Cp×q\mathbf{W}\in\mathbb{C}^{p\times q}W∈Cp×q,证明:
dABdW=dAdW(B⊗Iq)+(A⊗Ip)dBdW\begin{align*}
&\fra ...
矩阵课程笔记
个人写作笔记,如有问题,请不吝赐教!
目录如下:
矩阵之间的关系
若当标准形
矩阵多项式
若当标准化
凯莱-哈密顿定理
矩阵分析应用
矩阵函数
矩阵的微积分
定义
矩阵函数对纯量求导
纯量对向量的导数
预备知识
矩阵直积
矩阵拉直
复杂导数
预备知识:矩阵直积
矩阵对矩阵的导数
求导运算法则
矩阵对列向量求导
向量对向量求导
矩阵的全微分
运算式证明
矩阵之间的关系
相抵:A,B∈Cm×n,A⋍B ⟺ ∃U∈Cm×m,V∈Cn×n,s.t.B=UAV\mathbf{A},\mathbf{B}\in \mathbb{C}^{m\times n},\mathbf{A}\backsimeq\mathbf{B} \iff \exist \mathbf{U}\in \mathbb{C}^{m\times m}, \mathbf{V}\in \mathbb{C}^{n\times n},s.t.\quad \mathbf{ B=UAV}A,B∈Cm×n,A⋍B⟺∃U∈Cm×m,V∈Cn×n,s.t.B=UAV
相似、合同变换都是一种相抵关系。
正规 ...
小创意活动汇总
目录
前言
必要条件
某些小创意
填空剧本
衍生版填空
花火版填空
情景剧
问答游戏
前言
党日活动半个月一次,频率真的高啊,我可不想办成干巴巴的念PPT大会,上一次的情景剧扮演给了我一个很好的启示,如果能够把所以的活动都办到那个境界,也确实很满意了。
必要条件
办好一个活动,既要达到教育的目的以应付上级任务,又要不耽搁自己和他人过于多的时间,还要有乐趣,这三者貌似就是一个矛盾结合体,首先要满足以下的定量指标:
总时长最好不超过半个小时;
尽量让全体与会人员都参与进来,不要有人被冷落;
活动不能庸俗,不能与联欢会等活动重复,党日活动毕竟不是联欢会,要有一定的政治性和严肃性;
道具尽量少,不要搞得太花哨了;
能够让他们自己动脑筋最好,而不是主持人牵着鼻子走。
能够达到以上的五个条件,就是一个比较好的,又有新意又绝对不落俗套的活动。
某些小创意
鉴于我玩过的这么多桌游,总是能找到一些好的点子的,不过难在将它们与党日要求结合。
填空剧本
最合适的场景是:知识竞赛;
将全部成员分成两个对立的组(例如红军和国军),在某一特定的历史背景下,选定故事场景(保证不是真实的或者 ...
23年11月进展
第一篇文献
11月6日
文献名:A Differentiable Recurrent Surface for Asynchronous Event-Based Data
arxiv
解决的问题
本文解决了使用事件流数据中,难以把握手工选定的事件描述在时间和空间相关性上的设计性,从而导致时空相关性缺失的问题。本文的目标是寻找一个参数化的映射M\mathcal{M}M,使事件数据尽可能地稠密集中,并保留时空关系,提出了一种使用可学习、数据驱动的事件描述方法。
采用的方法
基本思路
对于某个给定的事件流,选定一定的时间间隔τ\tauτ,在该段时间间隔内,每个像素位置处均产生了一个事件顺序列,设计(或者生成)合理的特征集合,可以在每个像素位置上得到一个特征顺序列。然后,使用长短期记忆网络LSTM对每个像素位置处的特征顺序列进行异步处理,得到固定输出长度的输出向量,取定每个输出向量的最后一个有效元素作为当前位置的特征描述,整个图像上每个有事件位置的像素便可以得到当前时间段内的事件描述(是一个H×WH\times WH×W的矩阵),称为稠密曲面Dense Surface。
核心方法
本文设计的LS ...
记CUDA与CUDNN安装的坑
CUDA安装之锅
难蚌,装个Pytorch3d装一上午也装不起,与其装好库调包,还不如自己动手丰衣足食,四元数实现我自己写好了。
然后我才发现,首先是Pytorch3d只能在linux系统下安装,windows系统不兼容。
另一个重大发现:
1nvidia-smi
输出的压根就不是当前电脑安装的驱动版本,而是当前显卡支持的最高版本驱动!装pytorch的时候,务必要看仔细了。
4070Ti显卡驱动安装
马上就要收到这张激动人心的显卡了(我愿称之为小4090)。接下来是安装CUDA、CUDNN以及torch的时刻,这里有一些坑,准备做好记录工作,我是往win11的WSL上安装CUDA,win11系统上只安装驱动,不安装任何软件。
安装显卡驱动
这一步是安装硬件驱动,应该装在win11系统下,去nividia官网上找到工作室驱动,勾选以下选项:
然后下载安装即可(不要安装游戏驱动,那个虽然比工作室驱动在游戏上效果稍好,但是更新非常频繁,影响使用)。
安装完毕,可以命令行中输入nvidia-smi输出当前显卡驱动版本等信息,则说明显卡驱动安装已经完毕。
CUDA安装
驱动能够让CPU访问G ...
记linux的交换内存
前言
在训练模型中经常不明不白地出现Killed异常退出,查阅网上的说法,主流的观点是Torch的内存保护机制,当Torch检测到内存达到某一极值时,将自动Kill当前内存占用率最高的一个Torch进程,于是乎正在训练的模型就完蛋了;无论是Windows系统还是Linux系统,为了解决这个问题,都可以将虚拟内存(交换内存)开得更大。
交换内存
一点点个人的理解,交换内存是将磁盘上的一部分存储空间当作内存一样的空间来看待,CPU将内存中放不下的数据暂存在交换内存中,本质上起到内存的缓存作用。
调整交换内存
增加交换内存
有两种方式,一种是新增分区,一种是新增交换内存文件,在linux系统下,两种方式的作用基本一样,而后者的设置更加简单,因此本文只介绍后者的设置方法。
新增交换内存文件:在任意位置处,新建一个交换内存文件,使用以下的命令:
1sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
上述命令的意思是,从/dev/zero中读取数据,写入到/swapfile中,每次写入的数据块大小为1M,写入的次数为4096次,即总共写入了4G ...
变分法与泛函极值
众所周知泛函分析心犯寒,无数的前人帮我证明了,它确实是工科生能够遇到的最难的数学。不过好在我有那么一点点点点点的泛函分析基础,希望我能快速学会这个东西,将它用在工程实践中,我并不需要掌握太多理论上的推导与证明。
参考1,主要记录本人的学习过程。
变分
在实数集中,最常研究的一个问题是函数的极值最值问题,甚至在凸优化中也是局限于该问题的研究(虽然极其复杂罢了);当函数的定义域不再是实数、复数、向量甚至不再是数,而是Hilbert空间的变量(函数)后,如何求解这样的函数的极值最值呢?这便是变分variation所要研究的对象,而待求解的函数对象,也有一个专业的名字,即泛函functional。
泛函的定义
泛函是定义在函数空间上的函数(例如平方可积的Hilbert空间上的常见函数),其值域是数集,即f:H↦Rf:\mathbb{H\mapsto R}f:H↦R。变分学通常只研究一种具有特殊形式的泛函,即积分泛函,形如:
J(y)=∫ΩF[x,y(x),∇y(x),∇2y(x),⋯ ]dxJ(y)=\int_\Omega F[x,y(x),\nabla y(x),\nabla^2 y(x), ...
四元数理论
前言
四元数quaternion,一个熟悉又陌生的东西,我曾经短暂地接触过,但是又倏忽地将它抛弃。如今,我再次拜倒在它的脚下,只因为我现在不得不使用它,希望它能够不计前嫌 ,留我一条生路。
四元数基础
参考自Understanding Quaternions,用于记录学习四元数的过程。
定义
四元数是最简单的一种超复数,可以看作是复数在三维空间中的推广,其共有四个分量,定义为:
q=a+bi⃗+cj⃗+dk⃗q=a+b\vec{i}+c\vec{j}+d\vec{k}
q=a+bi+cj+dk
其中aaa称为实部,b,c,db,c,db,c,d称为虚部,i⃗,j⃗,k⃗\vec{i},\vec{j},\vec{k}i,j,k是四元数的基本单位,满足:
i⃗2=j⃗2=k⃗2=i⃗⋅j⃗⋅k⃗=−1\vec{i}^2=\vec{j}^2=\vec{k}^2=\vec{i}\cdot\vec{j}\cdot\vec{k}=-1\\
i2=j2=k2=i⋅j⋅k=−1
即三个基本单位是完备的正交基。特别的,在复数域下具有重要意义的欧拉公式,在四元数空间中也有以下的形式:
eiθ=co ...
变分自编码器
前言
变分自编码器,英文原名Variational Auto-Encoder,来自于2014年的论文Auto-Encoding Variational Bayes[1], 是图像领域有力的描述提取器,能够在更高维度完成对图像的高层次处理任务(如分割、识别等),其数学原理根植于最大似然估计与贝叶斯推断。
一般目的
生成式模型的一般目的,都是为了估计给定的概率密度pθ(z)p_{\boldsymbol{\theta}}(\mathbf{z})pθ(z),这里的z\mathbf{z}z是符合理想分布ppp的随机变量,一般不能直接观测到,直接观测到的随机变量是x\mathbf{x}x,它服从的观测分布是qqq,因此如何缩小这两个分布的差距,使得观测分布qqq无限逼近真实分布qqq,是描述提取器的核心任务。
为了估计出一个合理的条件概率分布qϕ(x∣z)q_{\boldsymbol{\phi}}(\mathbf{x|z})qϕ(x∣z),让它与理想分布pθ(x∣z)p_{\boldsymbol{\theta}}(\mathbf{x|z})pθ(x∣z)尽可能接近,必须想办法缩小它们之间的差 ...
墨卡托投影
前言
墨卡托投影我最早于大四上学期的制导与控制课程接触到,当时压根没有认真听,只知道有这个概念(不过我估计认真听了也不会记得),现在查阅网络资料自行学习一下,这个部分对于地理领域和遥感领域都有一定的参考意义。
墨卡托投影是十五世纪的意大利地理学家墨卡托(Mercator)发明的,其最大的特点是等航向角,即轨迹线与经线的夹角在地图上和真实地球上保持一致,极大地方便了大航海运动的发展,直到现在,墨卡托投影仍然大量运用于地图测绘和导航领域,是当前应用最为广泛的地球投影方式之一。在本人的学习过程中,由于使用到了月球的数字高程模型,该模型是将球面投影至平面地图上,使用的正好就是正球体的墨卡托投影。
科学技术真是第一生产力呀,再一次惊叹数学家的伟大。
墨卡托投影
参考了知乎文章和文章。其中后一篇文章使用弹性面片的方式是正确的,而使用球心光源的方式不是严谨的(虽然过程上是近似正确的,但是投影结果不对,正确的理解应当是,球心发出的光沿弯曲路径传播,曲率与纬度有关)。
定义与示意
如何将一个正球体转换投影成为平面上可以展示的地图,这是墨卡托投影需要解决的问题,墨卡托采用了一种巧妙的“弹性面片”的方法, ...