主页

Kinect和Arduino打造体感遥控直升机

声明 这个项目其实是我在大二时业余时间做的,原本在2012年9月15号发表在果壳网,然而现在只能从果壳的全站搜索里找到连接,但对应的页面也已经被删掉了。 搜索结果页面: 本文其实是从百度上搜索到的其他盗取我这篇文章的论坛上搬运来的(感谢一下当初未授权搬运这篇文章的人?)。自从我这片博文当年在果壳网发表之后,出现了无数搬运、剽窃的文章。甚至有人用我这篇文章里的内容经过洗稿之后成功发表过论文。时间已经过去很久,没有追责的动力(而且毕竟经过了洗稿,也不好说是直接抄袭),但今天搬运到这里,就是为了声明最早的原创性以正视听。 另外,这篇文章是我在大二时随笔所写,语言很口语化,如有语义不通处请见谅。 原始正文 一直说要出这个教程,懒了好多天,今天终于打算写出来了。。。。内容其实挺简单...

阅读更多

光纤入户光猫改桥接+内网转发IPTV=任意设备看电视直播

警告:本文将会介绍修改本地网络环境,部分操作有可能会导致你无法连接网络,如果不具备相关的网络知识,可能难以修复,甚至需要请运营商人员协助。所以以下内容请谨慎操作 注意:请确保你手中有你家网络的PPPoE拨号账户密码(通常印在了办理业务给的用户回单上),也可以通过电话咨询运营商,也可以进入到路由器的设置里找到相应的用户名和密码 最近新购置了一个软路由,对宿舍的网络改造可以更进一步了。宿舍使用的是北京联通300M的光纤入户(实际上能跑到400M,不知道是不是管理人员操作错了。。。),赠送了一台F477光猫和一台中兴B860AV2.1B的IPTV机顶盒(的使用权)。 宿舍本来使用思科E6500硬路由,然而这个硬路由使用的ARM CPU并不支持AES指令集,导致科学上网时的网速会受到对数据...

阅读更多

序列最小最优化(SMO)算法

序列最小最优化(Sequential Minimal Optimization, SMO)算法是一种对SVM参数进行求解的算法。互联网上针对SVM基础理论的文章已经很多了,从最大化最小类间隔,到拉格朗日乘数法求解不等式约束凸二次优化问题等。然而关于SMO算法介绍的还不是那么多,而且现有资料似乎不是很容易理解。所以这篇文章将会以尽量容易理解的方式来阐述SMO算法的一些细节。 简介 由于SVM本质上是一个不等式约束的二次规划(Quadratic Programming, QP)问题,而QP问题已经有一些算法进行最优化求解了。然而这些方法的效率都比较低,尤其是当训练数据规模庞大时,明明只有支持向量对参数取值有影响,但仍然需要对所有样本输入相互内积(或计算核函数值)。尽管可以将内积的结果(...

阅读更多

求解SVM时为什么要最大化拉格朗日函数?

SVM可以看作是「最小化最大间隔」的任务,本质上是一个二次规划的最优化问题。而求解二次规划问题的一个方法是利用拉格朗日乘数法,而在这个算法之中的一个难点就是「为什么要最大化拉格朗日函数?」 其实我们都知道该如何对无约束函数进行最优化:求导寻找极值。而对于带有约束的函数优化,就不能简单地求导寻找极值了:因为找到的极值可能不满足约束条件。所以这时候我们就要使用拉格朗日乘数法来解决这个问题了。 其实所谓的拉格朗日乘数法,就是求解等式或(和)不等式约束下最优化函数的一个方法。它能够将约束条件编码进巧妙设计的拉格朗日函数之中,使得对这个函数进行无约束的最优化所找到的极值就是原始函数在约束条件下的极值。 下面是一个带约束优化问题的基本形式: 这个问题称为原始最优化问题或原始问题。 然...

阅读更多

彻底关闭Mac OS X 10.15 Catalina自动更新

安装了黑苹果,所以不能轻易自动更新系统。想要彻底关闭Catalina系统的更新、并且关闭提示更新的小红点,可以这样搞: 首先在系统设置(System Preferences)->软件更新(Software Update)->高级(Advanced)中取消选中「检查更新(Check for Updates)」。如图: 然后打开终端输入下面的命令: sudo softwareupdate --ignore "macOS Catalina" defaults write com.apple.systempreferences AttentionPrefBundleIDs 0 killall Dock 然后就可以了。 如果想要再恢复回来,输入下面的命令: sudo...

阅读更多

在Mac上使用GDB进行调试

最近搞了一台黑苹果,写CPP代码的时候需要用gcc而不是预装的llvm。通过homebrew安装gcc和gdb之后发现gdb在vscode种仍然无法正常使用。看了一下gdb的verbose log,发现其中一行错误: ->1011^error,msg=”Unable to find Mach task port for process-id 9157: (os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8))” 怀疑这是Mac OS的代码签名和安全性之类的问题,于是查了一些关于code sign的资料,终于搞定了。 方法记录如下。 警告:这里会生成一个用来代码签名的...

阅读更多

动态规划例题整理

临近毕业找工作的阶段,于是开始刷题。最近在几种刷动态规划类的题目。这篇帖子将会对刷过的一些题做一个整理。里面以Leetcode上的题目为主(其实目前各大平台经典问题几乎都是有交集的)。 P.S. 下面的例题标题如果是链接可以点开看我的可执行代码。 动态规划解题思路和例题 解题思路 最开始我是看了九章算法公开课,所以这里先整理一下这个视频里提出的解题思路。后面各个例题也会按照这个思路进行分析。 动态规划方法虽然比较灵活,但大致可以归纳成以下几个步骤: 确定状态 研究最优策略的最后一步:确定达到最优策略的最后一步 化为子问题:通过寻找最有状态的前一步状态,来将问题划为“条件一样、规模下降”的子问题。 状态转移方程 ...

阅读更多

机器学习笔记:分类

分类问题与回归问题不同,是想要对输入数据给出一个类别的判断。想要实现这个目的,最直观的想法是可以用回归模型以给出的输出作为判断依据。例如对于二类分类问题,我们可以让模型输出一个位于$[-1,1]$的数字,让第一类数据以$1$作为label,让第二类数据以$-1$作为label。然后在预测时大于1则分为第一类,小于1则分为第二类。如下图所示: 但这么做其实是有局限性的。因为当我们改变一下数据分布的样子,就会变成这样: 由于新的数据的加入,如果仍然用绿色线来作为判别分类,会导致右小角的那些新加入的样本的回归值远大于1。而模型为了避免这种情况的发生(想让所有蓝色点都尽量趋近于1),就会自发地将分类边界从绿色线向紫色线进行偏移。即如果考虑上图中所有数据点,学到的分了边界不会是绿色的...

阅读更多