LOADING . . .

摘要: 在命令行中运行python代码是很常见的,下面介绍如何定义命令后面跟的参数。 常规用法 Python代码中主要使用下面几行代码来定义并获取需要在命令行中赋值的参数: import argparse parser = argparse.ArgumentParser("Description.") # 阅读全文
posted @ 2020-11-30 13:19 颀周 阅读(1050) 评论(0) 推荐(1) 编辑
摘要: 下面通过实验来探索Pytorch分配显存的方式。 实验 显存到主存 我使用VSCode的jupyter来进行实验,首先只导入pytorch,代码如下: import torch 打开任务管理器查看主存与显存情况。情况分别如下: 在显存中创建1GB的张量,赋值给a,代码如下: a = torch.ze 阅读全文
posted @ 2020-11-16 23:21 颀周 阅读(1457) 评论(0) 推荐(2) 编辑
摘要: 训练视觉相关的神经网络模型时,总是要用到图像的读写。方法有很多,比如matplotlib、cv2、PIL等。下面比较几种读写方式,旨在选出一个最快的方式,提升训练速度。 实验标准 因为训练使用的框架是Pytorch,因此读取的实验标准如下: 1、读取分辨率都为1920x1080的5张图片(png格式 阅读全文
posted @ 2020-11-14 22:16 颀周 阅读(953) 评论(0) 推荐(3) 编辑
摘要: 使用GAN生成图像必不可少的层就是上采样,其中最常用的就是转置卷积(Transposed Convolution)。如果把卷积操作转换为矩阵乘法的形式,转置卷积实际上就是将其中的矩阵进行转置,从而产生逆向的效果。所谓效果仅仅在于特征图的形状,也就是说,如果卷积将特征图从形状a映射到形状b,其对应的转 阅读全文
posted @ 2020-10-29 23:19 颀周 阅读(3419) 评论(2) 推荐(6) 编辑
摘要: Tensorboard是TF自带的可视化工具。它可以让我们从各个角度观察与修改模型,比如观察模型在训练时的loss动态变化曲线而无需在迭代完毕后再画图、绘制神经网络的结构图、调节超参数等。下面以最简单的形式展示tensorboard的常用功能。 开启tensorboard 打开命令行输入 tenso 阅读全文
posted @ 2020-10-26 20:00 颀周 阅读(1806) 评论(0) 推荐(2) 编辑
摘要: 本来是只用Tenorflow的,但是因为TF有些Numpy特性并不支持,比如对数组使用列表进行切片,所以只能转战Pytorch了(pytorch是支持的)。还好Pytorch比较容易上手,几乎完美复制了Numpy的特性(但还有一些特性不支持),怪不得热度上升得这么快。 模型定义 和TF很像,Pyto 阅读全文
posted @ 2020-10-25 14:05 颀周 阅读(1432) 评论(0) 推荐(1) 编辑
摘要: 虽然不是什么有应用价值的定理,但是每次看到实对称矩阵时总会有疑惑,现在记录下来。 证明 设有实对称矩阵$A$,它的特征值与对应的特征向量分别为$\lambda,x$,另外记$\overline{A},\overline{\lambda},\overline{x}$分别为它们对应的共轭复数(矩阵和向量 阅读全文
posted @ 2020-10-23 16:10 颀周 阅读(8602) 评论(0) 推荐(9) 编辑
摘要: 在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异。并且损失可以定义得很简单,比如二范数即可。但是对于已知参数的两个确定分布之间的差异,我们就要通过推导的方式来计算了。 下面对已知均值与协方差矩阵的两个多维高斯分布之间的KL散度进行推导。当然,因为便于 阅读全文
posted @ 2020-10-12 20:29 颀周 阅读(4616) 评论(0) 推荐(5) 编辑
摘要: GAN自推出以来就以训练困难著称,因为它的训练过程并不是寻找损失函数的最小值,而是寻找生成器和判别器之间的纳什均衡。前者可以直接通过梯度下降来完成,而后者除此之外,还需要其它的训练技巧。 下面对历年关于GAN的论文提出的训练技巧进行总结,这里仅记录技巧,具体原理请直接看论文原文。 WGAN和WGAN 阅读全文
posted @ 2020-10-05 21:47 颀周 阅读(1778) 评论(0) 推荐(3) 编辑
摘要: WGAN论文指出,原始GAN以JS、KL散度作为损失容易导致生成器梯度消失,他们提出了一种新的损失函数——Wasserstein 距离,很大程度上解决了GAN训练难的问题。 原始GAN的损失函数的缺陷 当两个分布之间重叠很小,或者说,两个分布的概率密度同时大于0的区域在整个分布的占比几乎为0时(无穷 阅读全文
posted @ 2020-08-31 10:19 颀周 阅读(1434) 评论(0) 推荐(1) 编辑
摘要: 以二维正态分布来举例。当方差不变,而协方差变化时,分布沿着长宽比等于两个方差之比的矩阵逐渐变窄。如下图所示: 两个分布的标准差都为0.1,均值都为0,协方差左边从0一直上升到0.01,右边从0下降到-0.01。 看了这个图,有人可能会问,随着协方差的变化,同一高度的椭圆等高线是否始终与矩形相切。看起 阅读全文
posted @ 2020-08-25 23:28 颀周 阅读(1625) 评论(0) 推荐(2) 编辑
摘要: Keras是基于Tensorflow(以前还可以基于别的底层张量库,现在已并入TF)的高层API库。它帮我们实现了一系列经典的神经网络层(全连接层、卷积层、循环层等),以及简洁的迭代模型的接口,让我们能在模型层面写代码,从而不用仔细考虑模型各层张量之间的数据流动。 但是,当我们有了全新的想法,想要个 阅读全文
posted @ 2020-08-20 23:51 颀周 阅读(2555) 评论(0) 推荐(2) 编辑
摘要: 生成模型产生的是高维的复杂结构数据,它们不同于判别模型,很难用简单的指标来评估模型的好坏。下面介绍两种当前比较流行的评估生成模型的指标(仅判别图像):IS(Inception Score)和FID(Frechet Inception Distance score)。 IS IS基于Google的预训 阅读全文
posted @ 2020-08-19 13:27 颀周 阅读(16081) 评论(0) 推荐(10) 编辑
摘要: 现在的神经网络通常都特别深,在输出层向输入层传播导数的过程中,梯度很容易被激活函数或是权重以指数级的规模缩小或放大,从而产生“梯度消失”或“梯度爆炸”的现象,造成训练速度下降和效果不理想。 如何避免或者减轻这一现象的发生呢?归一化就是方法的一种。归一化将网络中层与层之间传递的数据限制在一定范围内,从 阅读全文
posted @ 2020-08-18 13:03 颀周 阅读(2620) 评论(0) 推荐(3) 编辑
摘要: 定义 协方差矩阵是用来衡量一组随机变量之间的线性关系的矩阵。我们都知道,对于$n$个随机变量$X_1,X_2,...,X_n$,总体协方差矩阵定义为: $ \left[ \begin{matrix} D(X_1)&Cov(X_1,X_2)&\dots&Cov(X_1,X_n)\\ Cov(X_2,X 阅读全文
posted @ 2020-08-13 13:47 颀周 阅读(14744) 评论(0) 推荐(9) 编辑
摘要: 隐马尔可夫模型(Hidden Markov Model, HMM)是可用于标注问题的模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。马尔可夫链不懂的可以把本科的《概率论与数理统计》找回来看一下,并不难,就是离散状态之间的转换。下面直接定义基本概念,为后面的算法做准备。 基本概念 变 阅读全文
posted @ 2020-08-10 15:01 颀周 阅读(2469) 评论(1) 推荐(3) 编辑
摘要: 深度学习优化算法最耳熟能详的就是GD(Gradient Descend)梯度下降,然后又有一个所谓的SGD(Stochastic Gradient Descend)随机梯度下降,其实还是梯度下降,只不过每次更新梯度不用整个训练集而是训练集中的随机样本。梯度下降的好处就是用到了当前迭代的一些性质,以至 阅读全文
posted @ 2020-08-04 18:51 颀周 阅读(1031) 评论(0) 推荐(3) 编辑
摘要: GAN的定义 GAN是一个评估和学习生成模型的框架。生成模型的目标是学习到输入样本的分布,用来生成样本。GAN和传统的生成模型不同,使用两个内置模型以“对抗”的方式来使学习分布不断接近输入样本分布。两个模型一个是生成模型(Generative model),用来生成样本;另一个是判别模型(Discr 阅读全文
posted @ 2020-08-03 22:44 颀周 阅读(4394) 评论(0) 推荐(3) 编辑
摘要: ReLu $\max(0,z)$ 修正线性单元,是最常用的非线性映射函数。常在神经网络隐层中使用,因为它在反向传播中计算导数十分方便。导数为: $\left\{\begin{aligned}&1,z\ge0\\&0,z<0\end{aligned}\right.$ softplus $\log(1+ 阅读全文
posted @ 2020-08-02 11:27 颀周 阅读(825) 评论(0) 推荐(2) 编辑
摘要: 集群系统通常使用SLURM作业调度脚本来提交、查看、修改作业。以下记录它的脚本与命令的编写与使用。 常用命令 以下是各种常用命令: squeue #查看当前执行中的任务情况 sinfo #查看所有分区的情况 sacct #查看24小时内的历史任务 scancel 56200 #取消id为56200的 阅读全文
posted @ 2020-07-30 12:15 颀周 阅读(1805) 评论(0) 推荐(3) 编辑
摘要: 遗传算法(Genetic Algorithm, GA)是一种通用的优化算法,属于进化算法簇中一个比较实用又有名的算法。进化算法融合了自然生物进化中共有的一些行为:繁殖、变异、竞争、选择等。 基本流程 GA通过迭代来优化目标函数的参数,直到目标函数满足一定条件时结束。迭代对目标函数的连续性并无要求,也 阅读全文
posted @ 2020-07-28 23:15 颀周 阅读(2233) 评论(0) 推荐(4) 编辑
摘要: 变分自编码器(variational autoencoder, VAE)是一种生成模型,训练模型分为编码器和解码器两部分。 编码器将输入样本映射为某个低维分布,这个低维分布通常是不同维度之间相互独立的多元高斯分布,因此编码器的输出为这个高斯分布的均值与对数方差(因为方差总是大于0,为了将它映射到$( 阅读全文
posted @ 2020-07-23 22:44 颀周 阅读(3699) 评论(0) 推荐(1) 编辑
摘要: Tensorflow/Keras 直接从文件生成图片数据 ImageDataGenerator,循环生成图片,在重复生成图片之前,会把所有图片都遍历一遍。而且如果图片总量不是生成批量的倍数的话,在生成重复图片的前一次的批量是不完整的。具体代码: import tensorflow as tf fro 阅读全文
posted @ 2020-06-22 20:58 颀周 阅读(864) 评论(0) 推荐(2) 编辑
摘要: EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计。 使用EM算法的原因 首先举李航老师《统计学习方法》中的例子来说明为什么要用EM算法估计含有隐变量的概率模型参数。 假设有三枚硬币,分别记作A, B, C。这些硬币正面出现的概率分别是$\pi,p,q$。进行如下掷硬币试验:先掷硬币 阅读全文
posted @ 2020-06-21 21:05 颀周 阅读(5043) 评论(6) 推荐(14) 编辑
摘要: K均值聚类是一种无监督学习分类算法。 介绍 对于$n$个$m$维特征的样本,K均值聚类是求解最优化问题: $\displaystyle C^*=\text{arg}\min\limits_{C}\sum\limits_{l = 1}^K\sum\limits_{x\in C_l}||x-x_l||^ 阅读全文
posted @ 2020-06-10 16:10 颀周 阅读(755) 评论(0) 推荐(2) 编辑
摘要: 反向传播算法基于多元函数链式法则,以下记录多元函数链式法则的证明与反向传播算法的实例推演。 多元复合函数的求导法则(多元链式法则) 定义 如果函数$u=\varphi(t)$及$v=\psi(t)$都在点$t$可导,函数$z = f(u,v)$在对应点$(u,v)$具有连续偏导数(重点),那么复合函 阅读全文
posted @ 2020-06-06 17:19 颀周 阅读(2334) 评论(0) 推荐(1) 编辑
摘要: TIKZ是LaTeX的一个绘图包,可以绘制其他软件很难画出来的图像。 基本用法 直线、垂足、矩形、椭圆 代码: \documentclass{article} \usepackage{tikz} \usetikzlibrary{arrows.meta}%画箭头用的包 \begin{document} 阅读全文
posted @ 2020-06-03 21:29 颀周 阅读(24327) 评论(0) 推荐(21) 编辑
摘要: python爬虫主要用两个库:Urllib和BeautifulSoup4。一个用来爬取网页,一个用来解析网页。 Urllib是Python内置的HTTP请求库,它包含四个模块: 1、request,最基本的 HTTP 请求模块,用来模拟发送请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法 阅读全文
posted @ 2020-06-02 13:28 颀周 阅读(422) 评论(2) 推荐(2) 编辑
摘要: PCA 主成分分析(Principal Components Analysis, PCA)是一种降维方法。假设数据集$X\in R^{n\times m}$包含$n$条$m$维数据,PCA即实现线性映射$Y=XD\in R^{n\times k}$。其中矩阵$D\in R^{m\times k},k 阅读全文
posted @ 2020-05-25 23:22 颀周 阅读(1426) 评论(1) 推荐(3) 编辑
摘要: 最基本的SVM(Support Vector Machine)旨在使用一个超平面,分离线性可分的二类样本,其中正反两类分别在超平面的一侧。SVM算法则是要找出一个最优的超平面。 下面从简单到复杂介绍三种SVM形式,然后介绍一种快速优化SVM的算法,最后用SVM实现人脸识别。 线性可分SVM 优化函数 阅读全文
posted @ 2020-05-25 16:18 颀周 阅读(2540) 评论(0) 推荐(3) 编辑
摘要: 在约束最优化问题中,常用拉格朗日对偶性将原始问题转换为对偶问题求解。 广义拉格朗日函数 称最优化问题 $\begin{equation} \begin{array}{lcl} \min\limits_{x\in R^n} f(x)\\ \begin{aligned} \text{s.t.}\;\;& 阅读全文
posted @ 2020-05-21 20:48 颀周 阅读(1582) 评论(0) 推荐(1) 编辑
摘要: 傅里叶(Fourier)级数是三角级数(每项都是三角函数)的一种。因为项数无限,且其中任意两个不同函数项之积在$[-\pi,\pi]$上的积分为0,所以可以作为希尔伯特空间的一个正交系。傅里叶级数可以拟合很多周期函数。 三角函数系的正交性 三角函数系 $1,\cos x,\sin x,\cos 2x 阅读全文
posted @ 2020-05-20 15:17 颀周 阅读(2759) 评论(0) 推荐(1) 编辑
摘要: 马尔可夫不等式 结论 对于任意非负随机变量$X$,$\forall \epsilon>0$,有: $\displaystyle P(X\ge\epsilon)\le\frac{E(X)}{\epsilon}$ 切比雪夫不等式是它的特例。 证明 $ \begin{align*} E(X) &= \in 阅读全文
posted @ 2020-05-08 10:55 颀周 阅读(5435) 评论(4) 推荐(5) 编辑
摘要: 基本流程 决策树是通过分次判断样本属性来进行划分样本类别的机器学习模型。每个树的结点选择一个最优属性来进行样本的分流,最终将样本类别划分出来。 构建决策树的关键是分流时最优属性$a$的选择。使用所谓信息增益$Gain(D,a)$来判别不同属性的划分性能,即划分前样本类别的信息熵,减去划分后样本类别的 阅读全文
posted @ 2020-04-30 20:11 颀周 阅读(678) 评论(0) 推荐(1) 编辑
摘要: 介绍与推导 LDA是线性判别分析的英文缩写,该方法旨在通过将多维的特征映射到一维来进行类别判断。映射的方式是将数值化的样本特征与一个同维度的向量做内积,即: $y=w^Tx$ 因此,建立模型的目标就是找到一个最优的向量,使映射到一维后的不同类别的样本之间“距离”尽可能大,而同类别的样本之间“距离”尽 阅读全文
posted @ 2020-04-30 18:05 颀周 阅读(697) 评论(0) 推荐(2) 编辑
摘要: 有些公式网上难找的话,直接在word里面用公式的“专用”模式写好,然后再转成线性,就能得到LaTeX代码。 latex编写数学公式要用环境: \usepackage{amsmath} 数学公式 左对齐 \begin{align*} f(x) &= x \\ &= 1 \end{align*} 非斜体 阅读全文
posted @ 2020-04-30 16:04 颀周 阅读(361) 评论(0) 推荐(1) 编辑
摘要: pydotplus是别的语言嫁接到python里面的,所以绘制要传入字符串形式表示的结构,而没有python的结构对象直接用来画。代码如下: import pydotplus as pdp graph = pdp.graph_from_dot_data('digraph demo1{ a -> b 阅读全文
posted @ 2020-04-21 12:20 颀周 阅读(2616) 评论(3) 推荐(1) 编辑
摘要: 高数 梯度与法向量的关系 求曲面$f(x^{(1)},...,x^{(n)})=0$在$(x^{(1)}_0,...,x^{(n)}_0)$处的法向量(有$f(x^{(1)}_0,...,x^{(n)}_0)=0$),实际上就是求$z = f(x^{(1)},...,x^{(n)})$在$(x^{( 阅读全文
posted @ 2020-04-13 00:12 颀周 阅读(499) 评论(0) 推荐(1) 编辑
摘要: 当我们想对某些特定的分布进行抽样时,由于电脑算法只能产生服从于均匀分布的伪随机数,我们可以通过映射的方式来获取特定分布的抽样。于是引出下面的问题: 假设随机变量$X\sim U(0,1)$,对于已知映射$Y = g(X)$,我们知道如何计算$Y$的概率密度函数。但是,如果我们已知的是$Y$的概率密度 阅读全文
posted @ 2020-04-11 22:47 颀周 阅读(1176) 评论(0) 推荐(2) 编辑
摘要: 核密度估计,或称Parzen窗,目标是利用离散的数据本身拟合出一个连续的分布,属于非参数估计。所谓非参数估计,即该估计并没有预设某种分布函数来对其参数进行求解或拟合,比如机器学习中K近邻法也是非参估计的一种。 直方图 首先从直方图切入。对于随机变量$X$的一组抽样,即使$X$的值是连续的,我们也可以 阅读全文
posted @ 2020-04-11 20:54 颀周 阅读(11758) 评论(13) 推荐(11) 编辑
很高兴能帮到你~
点赞