径向矩
1. 定义
1.1 径向矩
径向矩定义为极坐标表示的空间中的图像,kkk 阶径向矩的定义为
Ψ(k,p,q,l)=∫r=0∞∫θ=02prk⋅cospθ⋅sinqθ⋅eikθ⋅g(r,θ)drdθ\Psi (k,p,q,l) = \int_{r=0}^{\infty} \int_{\theta = 0}^{2p} r^k \cdot \cos^p \theta \cdot \sin^q \theta \cdot e^{ik \theta} \cdot g(r,\theta) dr d\theta
Ψ(k,p,q,l)=∫r=0∞∫θ=02prk⋅cospθ⋅sinqθ⋅eikθ⋅g(r,θ)drdθ
其中,(r,θ)(r,\theta)(r,θ) 为图像像素的极坐标,g(r,θ)g(r,\theta)g(r,θ) 为图像的亮度分布,k,p,q,lk,p,q,lk,p,q,l 均为整数,且 p,qp,qp,q 为非负整数。
正交多项式
1. 定义
若函数 W(x)W(x)W(x) 在区间 (a,b) 可积,且 W(x)≥0
W(x) \geq 0
W(x)≥0,则 W(x)W(x)W(x) 可作为权函数。
对于一个多项式的序列 fif_ifi 和权函数 W(x)W(x)W(x),定义内积
<fm,fn>=∫abfm(x)fn(x)W(x)dx\begin{array}{c}
\lt f_m, f_n \gt = \int_a^b f_m(x) f_n(x) W(x) dx
\end{array}
<fm,fn>=∫abfm(x)fn(x)W(x)dx
若 n≠mn \ne mn=m,有 <fm,fn>=0\lt f_m, f_n \gt = 0<fm,fn>=0,这些多项则称为正交多项式。
若 fif_ifi 除了满足正交性之外,更有 <fn,fn>=1
\lt f_n, f_n \gt = 1
<fn,fn>=1,则称为规范正交多项式。
2. 常见的正交多项式
勒让得多项式
切比雪夫多项式
雅可比多项式
...
切比雪夫多项式
1. 简介
切比雪夫多项式是与棣莫弗定理有关,以递归方式定义的一系列正交多项式序列。通常,第一类切比雪夫多项式以符号 TnT_nTn 表示,第二类切比雪夫多项式用 UnU_nUn 表示。切比雪夫多项式 TnT_nTn 或 UnU_nUn 代表 nnn 阶多项式。
棣莫弗定理
棣莫弗定理是一个关于复数和三角函数的公式,其内容为:对任意复数 xxx 和整数 nnn,下列性质成立:
(cos(x)+isin(x))n=cos(nx)+isin(nx)\begin{array}{c}
(\cos(x) + i\sin(x))^n = \cos(nx) + i\sin(nx)
\end{array}
(cos(x)+isin(x))n=cos(nx)+isin(nx)
切比雪夫多项式分别是第一、第二类切比雪夫微分方程的解:
(1−x2)y′′−xy′+n2y=0(1−x2)y′′−3xy′+n(n+2)y=0\begin{array}{c}
(1-x^2)y^{''} - xy^{'} + n^2y = 0 \\
(1-x^2)y^{' ...
Ubuntu16.04上搭建VSCode+Python虚拟环境
1. 安装 virtualenv 包
1pip install virtualenv # 或者 pip3(具体看个人需要搭建的环境)
2. 建立存放虚拟文件的文件夹
1mkdir venv
3. 创建虚拟环境
1virtualenv --system-site-packages venv # --system-site-packages 参数表示拷贝系统 python 环境的 packages 到虚拟环境中
4. 激活虚拟环境
1source venv/bin/activate
然后就可以使用 pip 安装自己的软件包到虚拟环境中了。
5. 退出虚拟环境
1deactivate
6. VSCode 配置 Python 运行环境
VSCode 扩展中安装 Python 插件。
7. VSCode 配置默认 Python
修改工作区目录下的 .vscode 文件夹下的 settings.json 文件中的 Python 路径为虚拟文件夹下的 Python 路径(如果没有 settings.json 则创建),则在该工作区下直接运行的 Python 默认为虚拟环境下的 Python 。
PyTorch张量
1. 简介
tensor(张量)是 PyTorch 中的多维数组,类似与 Numpy 中的 ndarray 。
2. 张量类型
PyTorch 中张量一共有 101010 种类型:
张量类型
数据类型(dtype)
说明
torch.FloatTensor
torch.float32 或 torch.float
323232 位浮点型(binary32,111 符号位 + 888 指数位 + 232323 有效位)
torch.DoubleTensor
torch.float64 或 torch.double
646464 位浮点型(binary64,111 符号位 + 111111 指数位 + 525252 有效位)
torch.HalfTensor
torch.float16 或 torch.half
161616 位浮点型(binary16,111 符号位 + 555 指数位 + 101010 有效位)
torch.BFloat16Tensor
torch.bfloat16
161616 位浮点型(bfloat16,111 符号位 + 888 指数位 + ...
Git常见问题
1. remote:error:File:××× exceeds 100.00 MB. ⋯\cdots⋯ remote:Please remove the file from history and try again.
问题:上传文件超出远程仓库的限制
解决:
方案一:撤销上一次 commit,会退到上一次 commit 前的状态,然后移除超出限制的文件,重新上传。
1git reset HEAD^ # 撤销上一次 commit
【注意事项】
若不小心错误回退到上次版本,需要撤销 reset 操作,则可以使用以下代码查看 git HEAD 变化的历史记录。
1git reflog
然后使用 git reset 回退到的历史记录:
1git reset XXX # XXX 为想要会退到的历史记录的 HEAD
当然,这种方法也能解决上传文件超出远程仓库的限制而导致的上传失败问题。
方案二:删除大文件的提交记录。
首先根据报错提示的记录 id(此处以 d0781e7d125599010f4885fa95802a1d7018cd44 为例)查询该大文件的路径:
...
几何矩
1. 定义
1.1 几何矩
几何矩定义于基本集 {xpyq}\{x^p y^q\}{xpyq},则 p+qp+qp+q 阶二维几何矩用 mpqm_{pq}mpq 表示,其表达式为:
mpq=∬ζxpyqf(x,y)dxdy\begin{array}{c}
m_{pq} = \underset{\zeta}{\iint} x^p y^q f(x,y) dxdy
\end{array}
mpq=ζ∬xpyqf(x,y)dxdy
其中,ζ\zetaζ 是图像亮度函数 f(x,y)f(x,y)f(x,y) 定义的像素空间区域。
1.2 特征函数
亮度函数 f(x,y)f(x,y)f(x,y) 的二维傅里叶变量称作特征函数:
F(u,v)=∬ζei(ux+vy)f(x,y)dxdy\begin{array}{c}
F(u,v) = \underset{\zeta}{\iint} e^{i(ux + vy)} f(x,y) dxdy
\end{array}
F(u,v)=ζ∬ei(ux+vy)f(x,y)dxdy
其中,(u,v)(u,v)(u,v) 表示频域坐标。将质数项展开成级数形 ...
矩阵微分布局
【注】参考邱锡鹏《神经网络与深度学习》。
1. 简介
在数学中, 矩阵微积分是多元微积分的一种特殊表达,尤其是在矩阵空间上进行讨论的时候。它把单个函数对多个变量或者多元函数对单个变量的偏导数写成向量和矩阵的形式,使其可以被当成一个整体被处理。
2. 偏导数
矩阵微积分的表示通常有两种符号约定:
分子布局(Numerator Layout)
分母布局(Denominator Layout)
两者的区别是一个标量关于一个向量的导数是写成行向量还是列向量。
【注】向量一般未特殊说明都是用列向量表示。
2.1 标量关于向量的偏导数
对于 MMM 维向量 x∈RM
\boldsymbol{x} \in \mathbb{R}^M
x∈RM 和函数 y=f(x)∈R
y = f(\boldsymbol{x}) \in \mathbb{R}
y=f(x)∈R,则 yyy 关于 x\boldsymbol{x}x 的偏导数为:
分母布局:
∂y∂x=[∂y∂x1,⋯ ,∂y∂xM]T∈RM×1\begin{array}{c}
\frac{\partial y}{\partial \boldsymb ...
过拟合
1. 简介
机器学习的目标是提高泛化能力,即便是没有包含在训练数据里的未观测数据,也希望模型可以进行正确的识别。而机器学习问题中经常会出现过拟合的问题,即只能拟合训练数据,但不能很好地拟合不包含在训练数据中的其他数据的状态。
2. 原因
发生过拟合的原因,主要有以下两个。
模型拥有大量参数、表现力强。
训练数据少。
3. 解决
3.1 权值衰减
该方法通过在学习的过程中对大的权重进行惩罚,来抑制过拟合。即在原来的损失函数中添加一项正则惩罚项来抑制过拟合:
L^←L−12λW2\begin{array}{c}
\hat{L} \leftarrow L - \frac{1}{2} \lambda \boldsymbol{W}^2
\end{array}
L^←L−21λW2
其中,λ\lambdaλ 是控制正则化强度的超参数。
【注】这里采用的是常用的 L2L_2L2 范数,也可以根据具体题目使用其他范数(比如 L1L_1L1、L∞L_\inftyL∞ 范数等)。
3.2 Dropout
Dropout 是一种在学习的过程中随机删除神经元的方法。训练时,随机选出隐藏层的神经元 ...
BatchNormalization
1. 简介
Batch Norm(Batch Normalization)是以进行时学习的 mini-batch 为单位,按 mini-batch 进行正规化(即就是进行使数据分布的均值为 0、方差为 1)。通过将这个处理插入到激活函数的前面(或者后面),可以减小数据分布的偏向。
2. 实现
考虑 mini-batch 的 mmm 个输入样本数据 {x1,x2,⋯ ,xm}\{x_1,x_2,\cdots,x_m\}{x1,x2,⋯,xm}:
Input: Values of xxx over a mini-batch: B={x1,⋯ ,xm}\mathcal{B} = \{x_1,\cdots,x_m\}B={x1,⋯,xm}
Parameters to be learned: γ,β\gamma,\betaγ,β
Output: {yi=BNγ,β(xi)}\{y_i = \mathrm{BN}_{\gamma,\beta}(x_i)\}{yi=BNγ,β(xi)}
μB←1m∑i=1mxiσB2←1m∑i=1m(xi−μB)2xi^←xi−μBσB2 ...
权重初始值
隐藏层的激活值受到权重初始值的影响,进而关系到神经网络的学习能否成功,所以权重初始值的设定至关重要。
1. Xavier 初始值
Xavier的论文中提出的设定值, 不仅考虑了前一层的输入节点数量,还考虑了下一层的输出节点数量。
在 Caffe 等框架中,对 Xavier 初始值进行了简化,如果前一层的结点数为 nnn,则初始化值使用标准差为 1n\frac{1}{\sqrt{n}}n1 的高斯分布。
适用激活函数
sigmoid
tanh
【注】Xavier初始值是以激活函数是线性函数为前提而推导出来的。因 sigmoid 函数和 tanh 函数左右对称,且中央附近可以视作线性函数,因此适合 Xavier 初始值。
2. He 初始值
He 初始值也称作 ReLu 专用权重初始值。
当前一层的结点数为 nnn 时,He 初始值使用标准差为 2n\sqrt{\frac{2}{n}}n2 的高斯分布。
适用激活函数
ReLu
AdaGrad
1. 简介
AdaGrad 算法是借鉴 ℓ2\ell_2ℓ2 正则化的思想,每次迭代时自适应地调整每个参数的学习率。
2. 原理
第 ttt 次迭代时:
ht=ht−1+∂L∂Wt−1⊙∂L∂Wt−1Wt=Wt−1−η1ht+ε∂L∂Wt−1\begin{array}{c}
\boldsymbol{h}_t = \boldsymbol{h}_{t-1} + \frac{\partial L}{\partial \boldsymbol{W}_{t-1}} \odot \frac{\partial L}{\partial \boldsymbol{W}_{t-1}}\\
\boldsymbol{W}_t = \boldsymbol{W}_{t-1} - \eta \frac{1}{\sqrt{\boldsymbol{h}_t+\boldsymbol{\varepsilon}}} \frac{\partial L}{\partial \boldsymbol{W}_{t-1}}
\end{array}
ht=ht−1+∂Wt−1∂L⊙∂Wt−1∂LWt=Wt−1−ηht+ε ...