0%

因为开发图像检索系统的需要,需要学习局部敏感哈希算法。我在网上看了很多局部敏感哈希算法的讲解,也没有一个能讲清楚的。什么打乱表格、计数 1 最开始出现的索引、minHash 等没啥用的东西把人说的云里雾里。

而如何设计哈希函数、如何把相似内容放到同一个桶中、计算相似度则闭口不谈。所以,关于数学理论推导,本文就不描述了,网上其他博客多的是,本文从代码的角度来理解局部敏感哈希算法,相对更清晰,附 C++ 程序实现。

想来想去,以壮士断腕的决心决定抛弃垃圾 windows 了,实在是 TMD 卡的要死,但是以我电脑的配置,不可能卡的。加上 C 盘的无理由暴增,TMD 空间锐减,加上每次系统动不动更新,每次更新都 TMDbug 直接卡死。我宁肯花一周的时间打造一款我的主力 Arch Linux ,再 TMD 也不向 windows 低头了。以本文记录 Arch Linux 的折腾全记录。

包括:代理、终端、字体、换源更新、软件、甚至是博客迁移等。最重要的是,关于向这个世界的妥协,如何使安装 QQ、微信和 word 等非必要但深入人心的软件。毕竟老板让你微信给他发文件还是很常见的,毕竟老板没手没脚,发一次不接收必须发第 $N$ 次,毕竟他用 LaTeX 也要手动编号。

我是练习时长一年的 C++ 个人练习生,喜欢野指针、模板报错和未定义行为(undefined behavior)。之前在写设计模式的『工厂模式』时,一脚踩到了构造、继承和 new 组合起来的坑,现在也有时间来整理一下了。

C++ 细节逐步填坑中,还有几个大坑预计 8 月前结束。普通的函数没啥意思了,本文涉及函数的进阶使用,包括:函数的默认参数、内联函数、函数重载和函数模板。

引用是 C++ 中一个比较神奇的东西。在这之前或者说 C 语言中,一般是使用指针来减少传参所带来的不必要的开销。如函数传递的参数是数组或结构体时,使用指针会省很多事,毕竟传递的是地址。而 C++ 中引用变量的主要用途也是函数传参,子函数直接操作原始数据,而不是其副本,这样处理大型数据结构也会佷便捷。

最近 rush 代码遇到一些问题,如一种典型的结构

1
2
3
4
5
|-main/
|----test1/
|--------module1.py
|----test2/
|--------module2.py

如上,想在 module2.py 中调用 module1.py 中的某个类,如果在 module2.py 中写:from ..test1 import module1,在 test2 文件夹下执行 python module2.py 会提示:

1
ImportError: attempted relative import with no known parent package

会遇到这样的错误。那么,如何解决呢?如果你只想看如何解决问题,直接翻到文末即可;网上大概搜了一下,需要 __init__.py 来解决下这个问题,但是网上搜了一圈,没啥写的特别好的教程,实在是烂的可以,特此来填坑。

MART(Misclassification Aware adveRsarial Training) 是 2020 年提出的最好的对抗防御算法。传统对抗训练算法中 min-max 时不会考虑当前样本是否被正确分类,统一制作对抗样本。而作者抓住了这一点,发现对于 max 制作对抗样本期间没有被网络正确分类的样本,对结果的影响很大。换句话说,网络连干净样本都不认识,何谈认识它的对抗样本? MART 算法的创新点在于区别对待错分类和正确分类的样本。