Jermmy's Lazy Blog


  • 首页

  • 分类

  • 归档

  • 标签

cmake学习笔记(1)——HelloWorld

发表于 2017-04-25 | 分类于 工具 |

什么是 cmake

cmake 是一个跨平台的自动化构建系统,它可以产生不同系统平台的构建文件(例如:类 Unix 系统的 Makefile,Windows 系统的 .vcproj )。开发者只要根据 cmake 的命令规则编写好 CMakeLists.txt 文件,就可以用对应平台的 cmake 程序生成相应的构建文件,再根据构建文件编译代码。它的好处是,开发者只要学会 cmake 自身的语法规则即可,至于平台本身的项目构建文件,则交由 cmake 开发人员处理。总而言之,cmake 是高级版的 Makefile,是优秀的 C/C++ 程序员必不可少的技能(当然后面这句是我自己说的)。

下面,我们就一步一步地来学习 cmake 吧🤓。本系列教程基于 cmake 3.8 版本。

(注:本教程大部分内容取自 Introduction to CMake by Example )

阅读全文 »

TensorFlow学习笔记:保存和读取模型

发表于 2017-04-23 | 分类于 TensorFlow |

TensorFlow 更新频率实在太快,从 1.0 版本正式发布后,很多 API 接口就发生了改变。今天用 TF 训练了一个 CNN 模型,结果在保存模型的时候居然遇到各种问题。Google 搜出来的答案也是莫衷一是,有些回答对 1.0 版本的已经不适用了。后来实在没办法,就翻了墙去官网看了下,结果分分钟就搞定了~囧~。

这篇文章内容不多,主要讲讲 TF v1.0 版本中保存和读取模型的最简单用法,其实就是对官网教程的简要翻译摘抄。

阅读全文 »

翻墙神器SwitchHosts

发表于 2017-04-22 | 分类于 工具 |

今天要介绍一个翻墙工具 SwitchHosts。

说真的,这个工具我已经听说很久了,但由于我一直都用着 Shadowsocks 纸飞机翻墙,就没怎么理睬它。直到今天,不得不去 TensorFlow 官网查点资料,却发现纸飞机也飞不到那里去,因此尝试了下 SwitchHosts,结果真是太感人了。

SwitchHosts

SwitchHosts 的原理其实很简单,就是通过修改 host 文件,指定 IP 地址。只要 GFW 没有对 IP 进行封锁,那么我们就可以直接通过 IP 访问服务器,避开敏感词检测。

SwitchHosts 提供多种平台的版本,详情请移步官网。

阅读全文 »

如何「优雅」地标数据

发表于 2017-04-19 | 分类于 机器学习 |

最近想做一个识别验证码的程序。目标其实很简单,就是识别出某网站验证码的字母和数字。

验证码
验证码

这种类型的验证码已经被做烂了,相应的破解程序也很多。但我只是想学习消遣一下。

我已经通过爬虫收集了某网站的大量验证码图片,并通过图像处理的方法把字母和数字分割出来(好在这类验证码比较简单,切割工作相对容易)。之后,便是要对这些图片进行标记并训练。我总共爬了 20000 张,每张上面有四个数字或字母,相当于要对 80000 张图片做标记分类。嗯,这很有趣!

阅读全文 »

python numpy 三行代码打乱训练数据

发表于 2017-04-18 | 分类于 Python |

今天发现一个用 numpy 随机化数组的技巧。

需求

我有两个数组( ndarray ):train_datasets 和 train_labels。其中,train_datasets 的每一行和 train_labels 是一一对应的。现在我要将数组打乱并用于训练,打乱后要求两者的行与行之间必须保持原来的对应关系。

阅读全文 »

决策树生成算法

发表于 2017-04-13 | 分类于 机器学习 |

关于决策树,想必大部分人都已经耳熟能详了,这是一种用来预测行为的树状分叉结构。本文主要想总结一下最常用的决策树生成算法:ID3,C4.5 以及 CART。

构造的原则

熟悉决策树的你一定记得,决策树每个非叶子结点对应的其实是一个属性。比方说,想判断一个男生是不是 gay,我们首先需要判断他的性别是不是男的,是的话继续判断他的性取向,之后继续判断他的其他行为……这里的「性别」,「性取向」就是属性,而决策树的生成其实是依次挑选这些属性组成自己的节点,到最终可以明确得出结论的时候(也就是叶子结点),整棵树便生成了。所以,我们的目标就是按照某种方法依次挑选出这些属性。

我们挑选的原则是:每次选出这个属性后,可以最大限度地减小分类的可能性。回到 gay 这个问题,如果摆在我们眼前的属性有:「性取向」,「是否喜欢日漫」,「是否长发披肩」,那么,选择「性取向」这个属性,对我们之后的判断,帮助无疑是最大的。因为得知「性取向」之后,基本也就得到结论了。所以,对这个例子而言,「性取向」是我们优先挑选的属性。

那么,我们如何衡量这种帮助的大小呢?请往下看👇。

阅读全文 »

Bagging, Boosting, Bootstrap

发表于 2017-04-12 | 分类于 机器学习 |

Bagging 和 Boosting 都属于机器学习中的元算法(meta-algorithms)。所谓元算法,简单来讲,就是将几个较弱的机器学习算法综合起来,构成一个更强的机器学习模型。这种「三个臭皮匠,赛过诸葛亮」的做法,可以帮助减小方差(over-fitting)和偏差(under-fitting),提高准确率。

狭义的理解:Bagging,Boosting 为这种元算法的训练提供了一种采样的思路。

阅读全文 »

C++ offsetof

发表于 2017-04-08 | 分类于 C++ |

今天写 OpenGL 时,发现一个 C/C++ 中可能很实用但出现频率较低的函数: offsetof(type, member)。

严格来说,这只是一个宏定义。其中的 type 表示一个数据结构( struct 或者 class ),member 表示这个结构的成员。这个函数会返回一个 size_t 类型的数值,表示这个 member 在这个数据结构中的位置(以字节为单位)。

阅读全文 »

翻译:什么是当下最有价值的编程技能?

发表于 2017-04-04 | 分类于 杂感 |

本文翻译自 What is the most valuable programming skill at the moment? 中的一个回答,其中谈及的对编程能力的看法很有借鉴意义,希望自己未来的时间能够静下心来,不忘初心,持续积累。由于这是我第一次翻译英文文章,其中难免有翻译不恰当的地方,还望指正😁。

什么是当下最有价值的编程技能?

最具价值的技能,你可能都不会想到

(图片来自 collider.com)

阅读全文 »

线性代数中的重要矩阵

发表于 2017-04-03 | 分类于 线性代数 |

老实说,我觉得线性代数可能是大学里最重要的数学,没有之一。无论是机器学习、计算机视觉,抑或是计算机图形学等等,都需要靠线性代数这门工具作支撑。这篇文章主要总结一下线性代数中那些很重要的矩阵们。

阅读全文 »
1…567…10
Jermmy

Jermmy

In me the tiger sniffs the rose.

96 日志
19 分类
43 标签
GitHub
Links
  • 阮一峰
  • pluskid
© 2016 - 2020 Jermmy
由 Hexo 强力驱动
主题 - NexT.Muse