反常积分与柯西主值
在讨论定积分时有两个默认的限制条件:一是积分区间有穷,二是被积函数有界。在实际问题中往往需要突破这些限制,如需要在无穷区间上进行积分,或求无解函数的积分(函数在积分区间的某点上无界)。此时,研究的积分称为反常积分(improper integral,或称为非正常积分,广义积分。原有的定积分为Riemann积分,或常义积分,记作$f\in R[a,b]$,表示函数$f$ 在闭区间$[a,b]$上黎曼可积)。在研究反常积分时常常研究其收敛性或发散性,这一点与数项级数一致。更进一步,含参量反常积分和函数项级数研究一致收敛性和发散性。
两类反常积分无穷积分无穷积分是第一类反常积分,指积分区间的上限或下限为无穷的积分。
设函数$f$定义在无穷区间$[a,+\infty]$上,且在任何有限区间$[a,u]$上可积。如果存在极限$$\lim_{u\to +\infty}\int^u_a f(x) \mathrm{d}x = J,$$则称此极限$J$为函数$f$在$[a,+\infty]$上的无穷限反常积分(简称无穷积分),记作$$J = \int^{+\infty}_a f( ...
Hexo 大括号渲染
Hexo 生成 markdown 撰写的博文中含有公式大括号 $\lbrace$ 和 $\rbrace$ 时,发布网站上大括号消失。本篇给出可能的原因,和解决方法。
可能原因在使用公式编辑大括号时,采用了如下的形式
1$ E = \min_{v \in V} \{u \in V | w(u,v) > 0\} $
$$E = \min_{v \in V} {u \in V | w(u,v) > 0}$$
解决方法把
1\{ \}
替换为
1\lbrace \rbrace
结果示例
1$ E = \min_{v \in V} \lbrace u \in V | w(u,v) > 0\rbrace $
$$E = \min_{v \in V} \lbrace u \in V | w(u,v) > 0\rbrace$$
参考链接
Hexo Next主题Mathjax 大括号渲染错误
匈牙利匹配算法
匈牙利匹配算法(Hungarian Matching Algorithm),也称为 Kuhn-Munkres 算法,是一个 $O\big(|V|^3\big)$ ($V$ 表示二分图的顶点集)算法,可用于在二分图中找到最大权重匹配,有时称为分配问题。匈牙利算法被文章 End-to-End Object Detection with Transformers 中提出 DETR 算法中所采用,用于匹配预测目标框与真实目标框。除此之外,该算法也在多目标跟踪、实例分割、多人3D位姿估计等领域中发挥作用。本篇对匈牙利算法进行简单讲解。
历史匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,并推动了后来的原始对偶方法。美国数学家哈罗德·库恩于 1955 年提出该算法。此算法之所以被称作匈牙利算法,是因为算法很大一部分是基于以前匈牙利数学家 Dénes Kőnig 和 Jenő Egerváry 的工作之上创建起来的。
詹姆士·芒克勒斯在 1957 年回顾了该算法,并发现(强)多项式时间的复杂度。此后该算法被称为 Kuhn–Munkres 算法或 Munkres 分配算法。原始算法的 ...
深度学习中常用的正则化
Normalization 在深度学习中常被使用,它能够正则化神经网络中的输出数据,一定程度上消除内部协变量偏移(Internal Covariate Shift),加速网络训练,为初始化网络参数松绑,提高模型精度等。本篇介绍在深度学习中常用的正则化方法。
Batch NormalizationBatch Normalization 是对输入的的多个向量(即一批向量 $x_i,i=1,⋯,m$),对每个维度(特征)上进行正则化,也即每个神经元单独进行一批数据(分量)的正则化。首先计算该维度上的均值和标准差,然后该维度上各个分量减去均值再除以标准差。下面公式都是按照逐元素操作的。说白了,批正则化是针对每个神经元进行批次正则化。均值分母是批次大小。$$\mu_{\mathcal{B}} \leftarrow \frac{1}{m}\sum^m_{i=1} x_i$$
$$\sigma^2_{\mathcal B} \leftarrow \frac{1}{m}\sum^m_{i=1}(x_i - \mu_{\mathcal B})^2$$
$$\hat x_ ...
Jupyterlab Code Formatter 的快捷键 Keyboard Shortcuts 设置
Jupyterlab Code Formatter 能够在 notebook 中对代码进行格式化,安装成功后,只需要点击代码格式化按钮。那么如何像在 pycharm 中一样使用快捷键对代码进行格式化呢,本篇记录一下。
安装格式化包
安装插件
1pip install jupyterlab_code_formatter
安装格式化支持
1pip install black isort
重启 Jupyterlab
设置快捷键打开 Jupyterlab,点击 settings -> Advanced Settings Editor -> Keyboard Shortcuts
在 User Preferences 中输入(下面是针对单个单元格进行格式化)
123456789"shortcuts": [ { "command": "jupyterlab_code_formatter:black", "keys": [ &qu ...
关于 HEXO 博客搜索功能不稳定问题
Hexo + GitHub (or VPS) + Markdown 搭配完成博文撰写与发布,记录个人每天学习到的知识以及产生的灵感,是非常方便的。但是,最近发现我的博客出现搜索功能紊乱的问题,有些博文明明存在却搜索不到。因此,经过长时间的探索发现一种解决方法。特此记录下来。
问题描述在登录到博客网站后,想要通过关键字搜索某篇博文,搜索不到,但是确信博文是存在的。经过一页一页翻找,确实找到了博文。断定搜索功能失效。
尝试,在本地重新生成和部署
1234cd bloghexo cleanhexo generate hexo deploy
再重新打开博文进行搜索,发现可以使用。但是,写完博文后再次生成部署,发现搜索功能又失效。
定位问题通过网站直接访问搜索网页: https://xujinzh.github.io/search.xml
发现在顶部有红色错误提示,第$i$行和第$j$列,字符编码错误。
在本地打开 public/search.xml 的第 $i$ 行和第 $j$ 列,看看它属于哪篇博文。
在博文中检查是否有不合法的字符出现。清除掉它们。
重新生成和部署清理完所有非法字符后 ...
旋转曲面的面积
定积分的所有应用一般总可以安装“分割, 近似求和, 去极限”三个步骤导出所求量的积分形式. 但为简便实用起见, 也常采用本篇介绍的“微元法”. 其实在求旋转体的体积时我们采用微小区间上柱体近似旋转体体积, 但是在求旋转曲面的面积时却不能用旋转体的侧面积近似旋转曲面的侧面积. 就像求弧长时需要用微小区间的弦长近似弧长, 不能用弦长直角边近似一样, 求旋转曲面的表面积不能用圆柱侧面积需要用圆台侧面积近似.
微元法在上一篇中我们知道, 若令 $\Phi(x) = \int^x_a f(t) \mathrm{d}t$, 则当 $f$ 为连续函数时, $\Phi^{\prime}(x) = f(x)$, 或 $\mathrm{d}\Phi = f(x)\mathrm{d}x$, 且$$\Phi(a) = 0, \Phi(b) = \int^b_a f(x) \mathrm{d}x.$$现在问题恰好反过来: 如果所求量 $\Phi$ 是某区间 $[a, x]$ 上的,或者说它是该区间端点 $x$ 的函数, 即 $\Phi = \Ph ...
服务器开机或IP改变自动发送通知邮件
我这里有个需求,就是服务器会因为断电等原因关机、重启,导致 IP 地址更改,无法通过 SSH 连接,也不能及时知道电脑何时开机。这里通过撰写 Python 代码,自动检测 IP、开机自动邮件通知。本篇以 Ubuntu 为例。
编写 Python 代码在目录 /home/jinzhongxu/PythonProjects 下编写 Python 模块 send_message.py
因为在 Ubuntu 系统下,当电脑重启时,目录 /tmp 下的文件会清空
在 Mail 函数中,sender 为 qq 邮箱,即发送给你通知信息的邮箱;recipients 为接收信息的邮箱,可以通过该登录该邮箱查看收到的通知信息,如 IP 更改、服务器重启等;password 为 qq 邮箱的授权码,smtp_server、port 等都需要到 QQ 邮箱进行认证获取;subject 为邮件主题;text 为邮件内容;attachment 为附件,比如图像、文件等。
简单通知信息12345678910111213141516171819202122232425262728293031323334353 ...
Transformer
Transformer 是一种 Seq2seq 模型,即 input a sequence, output a sequence. 应用包括语音识别(输入语音,输出文本)、机器翻译(输入一种语言文本,输出另一种语言文本)、语言翻译(输入一种语言的语音,输出是另一种语言的文本,如字幕)、语音合成(输入一种语言文本,输出另一种语言的语音)、聊天机器人(对话)等,这些都可以看作 QA(Question & Answering)问题,都可以使用 Seq2seq 模型解决。
Seq2seq一般的 Seq2seq 模型的一般框架
1input sequence -> Encoder -> Decoder -> output sequence
如 Transformer 就是该模型的一种。李宏毅老师的课件:Transformer
Self-attentionself-attention 中文是自注意力,它对于输入的向量输出相同数量的向量。
如上图所示,$a^i, i = 1, 2, 3, 4$ 为输入向量(如词嵌入向量),$q^i, i = 1, ...
在 Ubuntu 上删除软件和清理配置文件
在 Ubuntu(或其他 Debian 类系统)上安装卸载软件常常都是通过包管理器 apt (或 apt-get) 来实现的。通过 apt remove packagename 和 apt purge packagename 都可以卸载软件,那么它们都有什么区别呢,它们都做了什么呢?本篇进行简单介绍。
remove使用命令
1apt remove packagename
确实能够卸载软件,但是,它会保留软件的配置文件信息。当下次再次安装该软件时,将会检索到保留的配置文件,安装时将会跳过软件的配置环节。
dpkg使用命令 dpkg --list packagename 可以查看软件的信息,如
1234567$ dpkg --list pythonDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: upperc ...
Python 定时任务
利用计算机能够帮助我们执行定时定点或者间隔时间段的任务,特别是对于容易遗忘、重复操作、准点执行等任务非常方便。除了在 Linux 上使用 corntab 等完成之外,在 Python 中也可以编程实现定时定点等任务的执行。本篇介绍 time, threading.Timer, schedule, apscheduler 等四个模块。
Time定时 3 秒后,依次执行相同任务 5 次
1234567891011from datetime import datetimeimport timedef showTime(count): time.sleep(count) print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))# 使用 while 可永久执行for i in range(5): showTime(3)
Threading.Timer定时 3 秒后,同时执行相同任务 5 次
123456789101112from datetime import datetimefrom threading ...















