Draft
Last updated
Last updated
有时候搜索一些奇怪的语法搜索引擎支持的不好,尽量用一句完整的话来搜索:
以下参考《统计推断》--George Casella,《几何与代数》--胡国权,《神经网络与深度学习 》--邱锡鹏
markdown语法仅用到{\bf X}。字体仅用到大小写字母斜体与大小写字母正粗体。
概率统计
$L(\theta,{\bf x})$
$P(X=x),P({\bf X}={\bf x})$
$f_X(x),f_{\bf X}({\bf x})$
线性代数
机器学习
遵从线性代数的记号(矩阵向量标量张量)(仅用于暗示维度,其他不做任何约定)
例如:样本矩阵记作$A\in\mathbb{R}^{n\times p}$或者$A\in\mathbb{R}^{p\times n}$ 彩色图片记作${\bf A}\in\mathbb{R}^{a\times b\times c}$ 彩色图片集合记作${\bf A}\in\mathbb{R}^{a\times b\times c\times n}$
注意到维数较高的张量的记号还是会引起混淆,故可仅使用${\bf A}$表示三维张量,更高维可换其他记号。
注记:上述记号约定中大写字母的记号有冲突,但不至于引起混淆,所用的符号类型仅有4种,便于临时约定其他符号。
$xy,\boldsymbol{xy},{\bf xy},XY,{\bf XY},\boldsymbol{XY}$
backward-vs-forward-compatibility
块状选择修改
将如下快速改为
方法为:将鼠标放在第一个 ->
处的 -
前面,按住 alt+shift
移动鼠标至第三个 ->
的 >
右侧,之后输入 <-
,即可替换成功,再按下 esc
退出此模式。(备注:类似于 vim 的块选择模式)
有时会出现VSCode版本与扩展不兼容的问题, 此时需要手动下载vsix包进行下载, 下面的问答解释了一些关于怎么下载历史版本的jupyter扩展的问题, 顺带也有介绍一些GitHub流水线的知识, 供参考.
VSCode设置File->Preferences->Settings
中的用户
优先级低于工作区
再低于文件夹, 实际上三者的可以设置的参数名是相同的. 优先级会决定哪个发挥作用. 也许逻辑是这样的, 用户的设置会体现在vscode安装目录下, 三者计算的结果会存在当前工作区的.vscose目录下. 有关于python的默认参数及含义可参见官网链接
相关介绍可以参考博客1与博客2, 简单来说就是一个存东西的地方(类似于数据库或队列), 发行版分为 Apache kafka
与 Confluent kafka
两类,区别在概念上的理解可参考博客
我们把Kafka比作Linux的内核,Confluent就相当于Linux的某个发行版。Confluent提供了Kafka没有的组件和功能,比如完善的跨数据中心数据备份以及集群监控解决方案。Confluent还分开源版本和企业版本,企业版本中提供了对底层Kafka集群完整的可视化监控解决方案,以及一些辅助系统帮助管理集群。Confluent的开源版本和Apache社区的Kafka并无太大区别。用户完全可以使用Confluent Open Source替代Apache Kafka。
在使用上,用容器部署kafka服务,使用kafka-python包来生产和消费数据, 具体可参考demo
示例: 计算后将数据回写入kafka(写入过程不阻塞主服务)
代码参考: draft-src/kafka/write-kafka
关于kafka的KAFKA_CFG_LISTENERS
与KAFKA_CFG_ADVERTISED_LISTENERS
的设定问题,参考博客
现代 CPU 的每个核一般都支持超线程。因此:
逻辑 CPU 数即为该机器并行的最大线程数。
在 Python 中,可以使用如下两种方式得到逻辑 CPU 数。(参考 Pytorch Dataloader 源码)
bitmap, image, raster graphics:都指的是以像素点的像素值进行存储的图片
verctor graphics: 翻译为矢量图或位图,是电脑图形
pdf 的基本元素为
字符(单个字符及相应的位置)
位图(电脑图形)
图片
多媒体数据(例如动图)
其他(超链接,Javascript,form)
特殊语法
&NAME
表示后面的内容 abc
为“变量” NAME
,而 *NAME
表示引用变量 NAME
的值。
一个例子(节选):
另一个例子 (常见于 .pre-commit-config.yaml
):
以上解析出来是:
也可以简化点写作:
gitbook是用来制作书籍的软件. 为此需要先安装node.js, 之后安装gitbook CLI, 然后编写书籍的内容(一堆markdown文件), 之后利用安装好的gitbook来编译, 运行. 这样就可以启动一个本地服务, 就看到书籍了
gitbook.com是gitbook CLI的网页版, 也是官方现在维护的版本. 使用方式为首先在gitbook.com上注册一个账号, 在账号内新建一个空间, 之后在空间里添加笔记, 最终可以在类似如下网址看到创建的书籍网页
github page为个人创建网页的过程是: 在github上建立一个特殊的仓库, 仓库名为
之后在这个仓库里按普通仓库一样的方式添加文件, 最终可以在类似于
的网页看到创建的结果, github page可以为个人/组织/项目来创建
可以将gitbook编译后的东西放入github上的仓库, 从而形成页面
Read the Docs可以参考
计划:
使用github.io(github page)写零散的博客(暂无计划)
使用Read the Docs写代码文档或书(页面结构似乎只能有两层)
gitbook.com与github仓库关联(写完整的笔记), 持续更新(页面结构似乎只能有两层)
备注:win10系统
打开注册表:win
+R
,输入regedit
点开如下目录:计算机\HKEY_CLASSES_ROOT\Directory\Background\shell
https://en.wikipedia.org/wiki/Subderivative
对于一个定义在开凸集上的凸函数$f:\mathbb{R}^n\to\mathbb{R},dom(f)=U$,设$x_0$是$U$的内点(因为$U$是开集,所以这里的内点相对于$U$或$\mathbb{R}^n$两者含义相同),$f$在$x_0$处的次导数(subgradient)是满足下述条件的向量$v$集合:
注记:在$x_0$处可微时,上述集合是单点集,即为普通的梯度。注意区分上述定义与凸函数的定义。这个定义的一个用途是找极值点。
一般函数(不必是凸的)的定义:待补充
设${y_i}_{i=1}^N$为真实值,${\hat{y}i}{i=1}^N$为模型输出的预测值。
$R^2$的取值范围为$(-\infty, 1]$。越大越好,最佳为1。一个baseline为$\hat{y}_i\equiv\bar{y}$,此时$R^2=0$。但可能会有模型预测结果的$R^2$为负值。
长尾分布又称为幂律分布, 即分布函数存在不可忽略的尾巴(非指数). 可能会引起无限方差或均值(猜测准确说是相应的无穷限积分不是绝对收敛的, 故方差和期望没有定义), 严格定义待补充.
典型地: 正态分布不是长尾分布
在机器学习或其他领域中, 由于长尾分布的尾巴部分不可忽略, 但出现频率较低, 出现样本稀疏的情况, 不利于
先搜索当前目录,再搜索PATH
ipconfig命令的目录在C:\Windows\System32
论文题目: (2008)Factorization meets the neighborhood: a multifaceted collaborative filtering model.
问题背景: 给用户做商品推荐, 具体来说, 假定有$n$个用户, $m$种商品, 用户对商品的兴趣矩阵记作$R\in\mathbb{R}^{n\times m}$, 其中$R$的某些位置的元素是已知的, 但有些位置的元素是未知的.($r_{ij}\in[0,1]$, $r_{ij}$越大表示兴趣度越高), 目标是填补矩阵$R$的空白元素, 从而起到推荐的效果. 具体来说优化问题定义为:
其中$\mathcal{K}$表示已知的评分对, $q_i$与$p_j$分别表示用户$i$与商品$j$的向量表示.
具体应用时, 对上述目标还可以加入先验知识进行改进, 例如: 有些用户给分标准偏高, 某些物品得分偏低. 引入$b_i\in\mathbb{R}$与$c_j\in\mathbb{R}$表示这种偏见, 将优化目标改为
其中$\mu$为评分的均值. 上述打分标准的思想为: 打分=兴趣+偏见.
(SVD++)更进一步, 还可以加入更多的先验信息, 思想为: 打分=兴趣+偏见+隐式反馈. 其中隐式反馈可以代表点击次数, 浏览历史等, 即:
其中$N(i)$表示用户$i$的行为集合(浏览过哪些商品), $y_k$代表该行为表达的隐式反馈(猜想应该是事先定义好的规则, 例如浏览时间越长, $y_i$越大). 实现代码可去github上搜索即可.
step 1: 首先下载安装程序https://graphviz.org/download/
step 2: 将graphviz的bin
目录加入系统PATH环境变量
step 3: 在python环境中
*step 4: 如果还出错, 尝试降低graphviz版本:
实际上就是一条条可以在cmd中直接运行的命令, 保存为.cmd
或.bat
文件, 有两种启动方式
1) 双击该文件. 这种方式会新开一个命令窗口,运行结束后新开的命令窗口会自动关闭
2) 在cmd窗口中使用start xx.bat
命令. 这种方式会新开一个命令窗口, 运行结束后新开的窗口会被保留
关于快捷方式, 右键->属性->目标
, 右键->属性->起始位置
. 可以通过win+R
直接运行目标内的内容
.psl文件: PowerShell脚本文件
公司外网电脑
原始物理地址: 00E17C688E5C 控制面板->网络和Internet->网络连接->右键以太网2->属性->配置->高级->Network Address
将值修改为: 00E17C688E6C
可以尝试在百度搜索引擎中输入ip查看当前ip.
语法实例
实际使用例子
注意: 左/右连接慎用
将压缩文件boost_1_74_0.zip
解压后进入(使用x86_x64 Cross Tools Command Prompt for VS 2019命令行)
对需要使用boost的项目项目->属性->VC++目录
添加路径
参照这个后
windows安装
step 1: 首先下载安装程序https://graphviz.org/download/
step 2: 将graphviz的bin
目录加入系统PATH环境变量
step 3: 在python环境中
*step 4: 如果还出错, 尝试降低graphviz版本:
简单地说, 标注数据是模糊的(例如: 在一段视频中, 只要有一帧出现了气球, 就给整个视频打上气球的标签)
有疑惑可以搜索维基与知乎, 以下为一些解释
transduction表示训练时已经见过了需要测试的数据。常见的情形有
聚类(给定一些数据, 任务是对这些数据划分为不同的簇, 但不要求做以下任务: 新来一个样本, 判断其簇的归属问题);
半监督学习情况下,训练集为$\mathcal{D}={\mathbf{X}{tr},\mathbf{y}{tr},\mathbf{X}{un}}$,另有数据集$\mathbf{X}{te}$。假设目前的任务是对$\mathbf{X}{un}$预测标签,那么它是一个transductive semi-supervised learning;如果任务是预测$\mathbf{X}{te}$的标签,则它是一个induction semi-supervised learning
induction表示通过训练数据总结一般的规律,每来一个新的数据就可以利用这个规律进行预测。常见的有:
监督学习
C++整数除法总是向零取整, %运算符的结果满足被除数=商*除数+余数
.
pytorch 的 checkpoint 是一种用时间换显存的技术,一般训练模式下,pytorch 每次运算后会保留一些中间变量用于求导,而使用 checkpoint 的函数,则不会保留中间变量,中间变量会在求导时再计算一次,因此减少了显存占用,跟 tensorflow 的 checkpoint 是完全不同的东西。
https://blog.csdn.net/ONE_SIX_MIX/article/details/93937091
ImageNet的图像分类任务
1000类,共1200*1000张图片,50,000张验证图片,150,000张测试图片。
torchvision.ops中内置有nms, rol_pooling等操作
训练数据(有无数据增强),测试数据。另外VOC数据集还有difficult的问题。以VOC数据集为例,2007与2012都有train, val, test数据
https://arleyzhang.github.io/articles/1dc20586/
论文中针对 VOC2007和VOC2012 的具体用法有以下几种:
只用VOC2007的trainval 训练,使用VOC2007的test测试
只用VOC2012的trainval 训练,使用VOC2012的test测试,这种用法很少使用,因为大家都会结合VOC2007使用
使用 VOC2007 的 train+val 和 VOC2012的 train+val 训练,然后使用 VOC2007的test测试,这个用法是论文中经常看到的 07+12 ,研究者可以自己测试在VOC2007上的结果,因为VOC2007的test是公开的。
使用 VOC2007 的 train+val+test 和 VOC2012的 train+val训练,然后使用 VOC2012的test测试,这个用法是论文中经常看到的 07++12 ,这种方法需提交到VOC官方服务器上评估结果,因为VOC2012 test没有公布。
先在 MS COCO 的 trainval 上预训练,再使用 VOC2007 的 train+val、 VOC2012的 train+val 微调训练,然后使用 VOC2007的test测试,这个用法是论文中经常看到的 07+12+COCO 。
先在 MS COCO 的 trainval 上预训练,再使用 VOC2007 的 train+val+test 、 VOC2012的 train+val 微调训练,然后使用 VOC2012的test测试 ,这个用法是论文中经常看到的 07++12+COCO,这种方法需提交到VOC官方服务器上评估结果,因为VOC2012 test没有公布。
在各自数据集上分别进行建模和评测的用法比较少,基本上在早期论文里出现就是起个对照作用;现在的大部分论文都会为了增加数据量而将二者合起来使用。
t-sne: http://www.datakit.cn/blog/2017/02/05/t_sne_full.html
注: t-sne只能用作fit-transform, 而不能用作先fit再transform. 简单来说, t-sne的目标是将高维向量降低至2维或3维, 保持高维空间的向量的相似度关系, 这种相似度关系利用概率分布来体现, 损失是利用KL散度迫使高维空间的分布与低维空间一致. 缺陷是新来的样本没有办法进行降维.
spatial transform networks: https://kevinzakka.github.io/2017/01/10/stn-part1/
注: 简单来说, 假设某层的输入为$X\in\mathbb{R}^{H,W,C}$, STN会使用$X$得到6个参数, 使用这6个参数对$X$进行仿射变换得到$X'\in\mathbb{R}^{H',W',C}$, 其中$H’,W'$为网络超参数, 而后利用正常的卷积:$Y=f_{conv}(X')$, 其中$Y$为下一层的输入.
右键启动软件的图标,选择属性->快捷方式ctrl+alt+C
Win + Tab
:切换应用窗口。用方向键
选择,Enter
确定。(会显示历史窗口)
Alt + Tab
:切换应用窗口。按住Alt
键,用Tab
选择,松开Alt
键确定。
增加shell: 参考
快捷键:
Ctrl+Alt+数字
切换打开的控制台 ctrl+shift+数字
打开新的控制台(参见windows terminal的设置栏) shift+alt+=/+
横向打开新控制台 shift+alt+_/-
纵向打开新控制台 alt+方向键
在本标签页内切换控制台 ctrl+shift+w
关闭当前控制台
[toc]
常见的翻译工具/软件有: 谷歌翻译, 百度翻译, 有道翻译, 微软翻译
翻译模型
对照表详情参见wiki
输入一堆文档, 其中每个文档指的是一个词语列表. 输出一个文档-话题矩阵与一个话题-词语矩阵, 其中每个文档的所有话题相加等于1, 每个话题的所有词语相加等于1
$(-\infty,+\infty)\to(0,+\infty)$, 可以看作是对$\text{relu}(x)=[x]_+=\max(0,x)$的软化, 但需要较大的计算量.
RDF中有三类"东西": IRI(International Resource Identifiers, 类似于URI), blank nodes, literals(字面量), 其中知识用
来描述, 简称SPO. 其中S可以是IRI或者blank node, P是IRI, O三种都可以. 因此字面量只能充当叶子节点.
参考链接: http://www.ruanyifeng.com/blog/2008/02/rdf.html
RDF的基本思想很简单, 就是说任何网络资源都可以唯一地用URI(统一资源标识符,Uniform Resource Identifier)来表示. 在这里, 可以简化地将URI理解成网址URL. 比如Yahoo, 首页的网址是http://www.yahoo.com/, 那么它的首页就可以用这个网址来唯一代表. 有了这个识别符以后,网络资源的其他特性都用"属性(Property)"="属性值(Property value)"这样的形式来表示.
根据RDF的定义, 资源本身是主语(subject), 属性名称是谓语(predicate), 属性值是宾语(object). RDF本身用xml文件表示, 下面是两个例子
例子1(简化后不规范的xml文件)
例子2()
这是一个规范的xml文件,可以实际使用。请注意标成黑体的那几行。首行"rdf:Description",这是RDF规定使用的标签,表示主语subject,后来的"rdf:about"属性用来表示资源的标识符,也就是url,它唯一地确定了一个网络资源。其他属性中的dc:title、dc:identifier、dc:subject、dc:description、dc:creator和dc:date,分别表示题目、标识符、主题、简介、创造者、日期,这几项都属于都柏林核心,等号后面是相应的值。至于trackback:ping属性,这一项在都柏林核心中没有规定,但是也可以加上去,从中可以看到RDF资源描述框架的灵活和强大。
都柏林核心(Dublin Core): 描述网络资源的一些常用的谓词(参考博客)
override(覆盖): 基类函数带有显式或隐式的virtual
, 子类中定义一个函数名与参数列表与之完全一致的函数, 则基类中的函数被覆盖. 即无法通过任何方式通过子类访问基类的该函数.
overwrite(重写):
子类中定义了一个与父类函数名与参数列表完全相同的函数, 但子类函数不是虚函数(不带显式或隐式的virtual
)
与父类函数名相同, 但参数列表不相同
以上两种情况均为重写, 即需要通过sub_class_obj.Base::foo()
方式进行函数调用
overload(重载)
在同一作用域内(例如一个类内), 函数名相同, 参数列表不完全相同, 构成重载.
callback函数: call back意指"回电话". 例子: 在编写一个对数组排序的函数时, 需要传入一个元素比较函数(这个比较函数就是callback function): 以下引用自algs4 part1 第二周ppt
Callback = reference to executable code.
Client passes array of objects to sort() function.
The sort() functioncallback calls back object's compareTo() method as needed
Implementing callbacks.(不同编程语言如何实现回调函数)
Java: interfaces.
C: function pointers.
C++: class-type functors. --- (例如std::qsort函数的元素比较参数传入的是一个重载了圆括号运算符的类)
C#: delegates.
Python, Perl, ML, Javascript: first-class functions. --- (当函数可以作为别的函数的参数, 即函数可以当作变量一样用时, 称这门语言拥有头等函数, 即first-class function)
三者都可用于GPU并行计算
C++ AMP (C++ Accelerated Massive Parallelism): 跨GPU种类(只要支持DirectX 11), 只适用于windows
OpenCL: 跨GPU种类, 跨操作系统(windows/linux)
CUDA C: 只适用于Nvidia GPU, 跨操作系统(windows/linux)
注册表目录 | 描述 |
---|---|
C | 字节数(C) | python 3.7.4 | numpy 1.17 | torch 1.3.0 |
---|---|---|---|---|
numpy | torch | tensorflow |
---|---|---|
论文 | 年份 | 类别 | 说明 |
---|---|---|---|
序号 | 描述及链接 | 状态 | 记录时间 |
---|---|---|---|
序号及链接 | 描述 | 记录时间 |
---|---|---|
序号及链接 | 描述 | 记录时间 |
---|---|---|
$X$
随机变量
$x$
样本/随机变量的取值
${\bf X}=(X_1,X_2,\ldots,X_p)^T$
随机向量
${\bf x}=(x_1,x_2,\ldots,x_p)^T$
样本/随机向量的取值
$A$
矩阵
$\bf{x}$
向量
$x$
标量
$\bf{A}$
张量
计算机\HKEY_CLASSES_ROOT\Directory\shell\typora
右击目录时显示在菜单栏
计算机\HKEY_CLASSES_ROOT\*\shell\typora
右击文件是显示在菜单栏
计算机\HKEY_CLASSES_ROOT\Directory\Background\shell
\
点击空白位置显示在菜单栏
计算机\HKEY_CLASSES_ROOT\Directory\ContextMenus\
点击空白位置显示在菜单栏的次级目录
bool
bool
numpy.bool
torch.bool
int
4
int
numpy.int32(1 default)
torch.int32 or torch.int
double
8
float
numpy.float64(1. default)
torch.float64 or torch.double
float
4
-
numpy.float32
torch.float32 or torch.float (1. default)
long long
8
-
numpy.int64
torch.int64 or torch.long (1 default)
unsigned char
1
-
torch.uint8
char
1
-
torch.int8
short [int]
2
-
torch.int16 or torch.short
unsigned short [int]
2
-
-
unsigned [int]
4
-
-
[signed] long [int]
4
-
-
unsigned long [int]
4
-
-
torch.float16
max/min (参数: axis)
max/min (参数: dim)
maximum/minimum
max/min
ndarray.astype(类型转换)
ndarray.to(类型转换)
::-1/flip(数组负数步长切片)
flip(tensor负数步长切片)
reshape
reshape/view
copy
clone/copy_/detach/detach_
concatenate(已有维度)/stack(新维度)
cat/stack
数组下标的数据类型int32等
int64等(不能为int32)
transpose(颠倒多个维度)
permute(颠倒多个维度)
Alexnet
2012
分类
ImageNet 2012冠军(分类任务)
ZFnet
2013
backbone
ImageNet 2013分类任务冠军
Overfeat
2013
backbone
ImageNet 2013定位任务冠军
VGG
2014
backbone
ImageNet 2014第二名
NIN
2014
Network in Network, 1*1 conv
GoogLenet
2014
backbone
ImageNet 2014第一名, 1*1conv
HighwayNet
2015.5
Resnet
2015.12
backbone
ImageNet 2015
Wide Resnet
2016.5(arxiv)
DenseNet
2016.8(arxiv)
CVPR 2017, dense connect Net
MobileNet v1
2017.4(arxiv)
MobileNet v2(2018.1 arxiv)
SENet
2017.9(arxiv)
ImageNet 2017
SIFT
2004
尺度不变特征
selective search
2011-
proposal region
非深度方法
EdgeBox
2014(ECCV)
proposal region
Adam
2014.12(arxiv)
优化算法
RCNN
2013.10(arxiv)
目标检测
bounding box regression
SPPnet
2014.6(arxiv)
分类,目标检测等
提到卷积层可以适应任意大小输入, 大概早于ImageNet 2014, SPP层用于输出固定维数特征
FCN
2014.11(arxiv)
语义分割
CVPR 2015 best paper提名
FastRCNN
2015.4(arxiv)
目标检测
ROI-pooling
FasterRCNN
2015.6(arxiv)
目标检测
RPN层替换掉原来的selective search等方法
Yolo v1
2015.6(arxiv)
目标检测
first one-stage detector in deep learning era
SSD
2015.12(arxiv)
目标检测
one-stage detector
Yolo v2
2016.12(arxiv)
目标检测
Yolo v3
2018.4(arxiv)?
目标检测
Mask RCNN
2017.3(arxiv)
实例分割
ROI-align
FPN
2016.12(arxiv)
目标检测
1. timm
pytorch-image-models: CV领域的SOTA backbone
持续更新中
2021-03-02
2. pytorch-lighting
PyTorchLightning: 待调研, 似乎是用于将Pytorch代码规范化
持续更新中
2021-03-11
3. bert4keras
bert4keras: 用几个文件实现transformer的代码, 长期维护, 兼容Keras与TensorFlow 1或2
持续更新中
2021-03-10
4. OfficeToPDF
OfficeToPDF: Office系列套件的文件转换为pdf格式, 纯C#实现. 可惜对于.vsdx
文件需要电脑上安装了visio
不更新
2021-03-11
5.triNNity
triNNity: C++实现了80种卷积运算
持续更新中
2021-3-20
6. fairseq
fairseq: 序列模型包(github pytorch组织下的项目, 由facebook维护)
持续更新中
2021-3-22
7. tesseract
持续更新中(39.6k star)
2021-4-15
8. pdfkit
wkhtmltopdf是一个将html转换为pdf的库, pdfkit是一个基于它的python包
几乎不更新
2021-4-20
python项目打包
2021-4-1
latex作图包tikz例子
2021-4-14
科学空间(苏建林), 一些关于AI尤其是NLP相关的博客值得一看, 特点是数学味道比较浓. 但实际上, 工程实践上也很细致
2021-6-2
一些笔记包含PRML、Python-Cookbook等
2021-4-13
一个用于做录制视频时ppt自动进行动画播放的工具
2021-4-13
一门算法课程(附有很多python实现代码, 但似乎没有上课视频), CS161好像确实是一门stanford推荐的算法课程, 但不是这个网址
2021-4-14
4. dash(plotly)
python模块, 可以生成交互式数据可视化Web应用, 基于 Flask (Python) + React 的 web 框架, 其中dash基于plotly
2021-5-7
5. pyecharts
2021-5-7
阮一峰的博客
2021-6-2
博客(包含Python、Linux等系列博客)、博客园排名前两百
2021-9-12