最近看了一些 Python 装饰器的用法,记录下来
拒绝遗忘:高效的动态规划算法
乔治·桑塔亚纳说过,“那些遗忘过去的人注定要重蹈覆辙。”这句话放在问题求解过程中也同样适用。不懂动态规划的人会在解决过的问题上再次浪费时间,懂的人则会事半功倍。那么什么是动态规划?这种算法有何神奇之处?本文作者给出了初步的解答。
感知机不能表示异或 (XOR)
首先,我们分析一下什么是感知机,
所谓感知机就是:假设输入空间(即特征空间)是,输出空间是,输入表示实例的特征向量,对于输入空间的点,输出表示实例的类别。由输入空间到输出空间的映射如下所示:
$$ f(x)=\text{sign}(w \cdot x+b) $$
其中 $\text{sign}$ 是符号函数,$w$ 和 $b$ 是感知机参数。
几种范数 (norm) 的简单介绍
什么是范数?
我们知道距离的定义是一个宽泛的概念,只要满足非负、自反、三角不等式就可以称之为距离。范数是一种强化了的距离概念,它在定义上比距离多了一条数乘的运算法则。有时候为了便于理解,我们可以把范数当作距离来理解。
4.寻找两个有序数组的中位数
方法:递归法
为了解决这个问题,我们需要理解 “中位数的作用是什么”。在统计中,中位数被用来:
将一个集合划分为两个长度相等的子集,其中一个子集中的元素总是大于另一个子集中的元素。
如果理解了中位数的划分作用,我们就很接近答案了。
PyTorch 的 dataloader 如何读取变长数据
最近在做一个新的声学模型,其中遇到一个点就是每个sentence的长度不一样的花,直接用dataloader的读取是有问题的。查了下中文资料,大家大多数这个问题都是趋于用torch.nn.utils.rnn.PackedSequence
来打包的,这个在dataloader里面其实就不太适用,pytorch论坛上提到用dataloader的collate_fn来处理的,所以想写个资料总结下 。
Git 使用笔记
少用 Pull 多用 Fetch 和 Merge
见到很多人说过这个经验,原因就是 git pull
把过程的细节都隐藏了起来,大部分时候是没有问题的,但是当代码出错时可能会造成损失。很多时候我们宁愿做的慢一些,也不愿意返工重来
一般的做法是:
1 | git fetch origin # 下载远程分支的更新 |
如果你想在合并前查看本地分支和远程分支的差异,可以使用下面的命令:
1 | git diff master origin/master |
单独进行下载和合并是一个好的做法,你可以先看看下载的是什么,然后再决定是否和本地代码合并,方便使用。
nvcc 编译报错:找不到 "cuda_runtime.h"
奇怪的错误
今天在安装 PANet 时遇到了一个奇怪的错误:
1 | Compiling nms kernels by nvcc... |