自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

alw_123的博客

新起点,新挑战,从0开始

原创 通俗理解OvO与OvR

现实中常遇到多分类学习任务。有些二分类算法可以直接推广到多分类,但在更多情形下,我们是基于一些策略,利用二分类算法来解决多分类问题。例如:OvO、OvR。OvO假设现在训练数据集的分布如下图所示(其中A,B,C代表训练数据的类别):如果想要使用逻辑回归算法来解决这种3分类问题,可以使用OvO。OvO(One Vs One)是使用二分类算法来解决多分类问题的一种策略。从字面意思可以看出它的核...

2019-08-08 14:24:23 2659

原创 通俗理解随机森林

既然有决策树,那有没有用多棵决策树组成森林的算法呢?有!那就是随机森林。随机森林是一种叫Bagging的算法框架的变体。所以想要理解随机森林首先要理解Bagging。Bagging什么是BaggingBagging 是 Bootstrap Aggregating 的英文缩写,刚接触的您不要误认为 Bagging 是一种算法,Bagging 是集成学习中的学习框架, Bagging 是并行式集...

2019-06-26 14:55:32 776 1

原创 tensorflow实现验证码识别(三)

搭积木数据都准备好了之后,就剩下定义网络结构了,定义网络结构说白了就是搭积木。我这边的积木是酱紫:可以看出来我搭了4层卷积+1层FC+1层softmax的辣鸡积木,搭积木的代码是酱紫:#推理 def __inference(self, images, keep_prob): images = tf.reshape(images, (-1, utility.IMG_H...

2018-12-30 19:07:52 1200 1

原创 通俗理解决策树ID3

0.什么是决策树决策树说白了就是一棵能够替我们做决策的树,或者说是我们人的脑回路的一种表现形式。比如我看到一个人,然后我会YY这个男人有没有买车。那我的脑回路可能是酱紫的:其实这样一种脑回路的形式就是我们所说的决策树。所以从图中能看出决策树是一个类似于人们决策过程的树结构,从根节点开始,每个分枝代表一个新的决策事件,会生成两个或多个分枝,每个叶子代表一个最终判定所属的类别。很明显,如果我现在...

2018-12-22 15:03:46 1638 7

原创 数字图像处理---通俗Canny边缘检测

0.何谓边缘说起边缘,那肯定是图像中明暗变化比较剧烈的像素所组成的线条。从视觉的角度来讲,我们首先注意到的其实就是一些简单的线条,然后再由这些简单的线条组合成更加抽象的概念来使得我们能够认识出我眼前的是个啥。就好比下面的图,你光看那个边缘图,是不是大概就能看出来原图里是个女人?右边的边缘图其实就是把原图中的边缘提取出来之后的图,从直觉上也能够看得出来,所谓的边缘检测无非就是对整个图的像素做像...

2018-12-15 12:00:38 1783 6

原创 tensorflow实现验证码识别(二)

tfrecords由于有个5W张图片的训练集,如果是placeholder的方式来把数据喂给graph的话,那可真蠢。。所以不如用tensorflow官方推荐的tfrecords来进行IO。这种IO方式主要是两步:1.先把数据dump成tfrecords文件2.用队列来把数据喂给模型写数据tfrecords文件是一种二进制文件,虽然如果把这个二进制文件打开会发现完全没有可读性,但是ten...

2018-12-09 11:45:49 2177 8

原创 数字图像处理---通俗理解腐蚀与膨胀

0.腐蚀与膨胀有什么卵用?腐蚀与膨胀是数字形态学里的两个基本操作,一般用于二值图像(当然RGB图也可以用)。腐蚀的作用说白了就是让暗的区域变大,而膨胀的作用就是让亮的区域变大(可以想象成巴啦啦能量和古娜拉黑暗之神在神仙打架。。巴啦啦能量赢了就是膨胀,古娜拉黑暗之神赢了就是腐蚀。。。)最典型的一个应用场景就是在你二值化后,你的目标和背景抠的不是很干净的时候可以试试两个操作,有时候效果出奇的好。...

2018-11-08 21:35:20 6509 11

原创 通俗理解梯度下降

0. 梯度下降有什么卵用?其实梯度下降不是一个机器学习算法,而是一种基于搜索的最优化方法。因为很多算法都没有闭式解的,所以需要通过一次一次的迭代来找到找到一组参数能让我们的损失函数最小。损失函数的大概套路可以参看这个图:所以说,如果用人话来描述梯度下降是干嘛的,就是。。。我不断的洗澡(寻找),油腻(靠谱)的师姐(权重)在哪里(是多少)。。1.怎么搜索?刚刚我们已经知道了梯度下降就是用来找...

2018-10-15 22:19:03 5563 13

原创 通俗理解线性回归(二)

题外话:在上一篇中聊了一下线性回归的一些概念和损失函数的形式,那这篇就接着上一篇的思路来聊聊线性回归的正规方程解。(如果你是小白,可以点进上一篇的传送门看看,没准能让你对线性回归有个大概的认识)3.怎样计算出线性回归的解?上一篇中的最后聊到了损失函数是个什么鬼,看懂了的老铁们现在应该已经弄清楚了一个事实。那就是我只要找到一组参数(也就是线性方程每一项上的系数)能让我的损失函数的值最小,那我这一...

2018-09-23 23:04:20 12517 37

原创 通俗理解线性回归(一)

0 什么是回归?假设线性回归是个黑盒子,那按照程序员的思维来说,这个黑盒子就是个函数,然后呢,我们只要往这个函数传一些参数作为输入,就能得到一个结果作为输出。那回归是什么意思呢?其实说白了,就是这个黑盒子输出的结果是个连续的值。如果输出不是个连续值而是个离散值那就叫分类。那什么叫做连续值呢?非常简单,举个栗子:比如我告诉你我这里有间房子,这间房子有40平,在地铁口,然后你来猜一猜我的房子总共值...

2018-08-29 22:04:03 53747 30

原创 tensorflow实现验证码识别(一)

效果先来看下成品是什么样子吧,成品的话,用随机生成的5W张验证码做训练,训练个40多个epoch,用随机生成的2W张做验证码做验证准确率在98%的样子。带简陋的UI的话是这么个样子: 想要完整代码的话可以进入传送门:https://github.com/aolingwen/fuck_verifycode生成验证码要识别验证码,当然首先就是要弄到验证码数据啦~~,验证码数据...

2018-06-16 15:47:35 7411 15

原创 win10企业版2016长期服务激活教程

步骤如下:命令提示符(管理员),依次输入以下3条命令slmgr /ipk DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ slmgr /skms xykz.f3322.org slmgr /ato

2018-04-19 19:59:11 18894 7

原创 leetcode_Power of Four

问题描述Given an integer (signed 32 bits), write a function to check whether it is a power of 4.Example: Given num = 16, return true. Given num = 5, return false.Follow up: Could you solve it witho...

2018-03-26 20:46:21 112

原创 算法铺子之二分搜索树

0.二分搜索树二分搜索树(Binary Search Tree,BST)是一颗典型的二叉树,任何节点的键值大于等于该节点左子树中的所有键值,小于等于该节点右子树中的所有键值。 二叉搜索树可以看作是有序集合的树形存储,是一种用途非常广泛的基础数据结构。1.二分搜索树的优势二分搜索树不仅能够高效的查找数据,还可以高效的插入和删除数据。时间复杂度都为O(logn)。2.二分搜索树...

2018-03-25 23:31:56 112

原创 算法铺子之二分查找法

0.二分查找法二分查找法就是在有序序列中不断分解三个部分(左:小于待查找的元素的区域,右:大于待查找元素的区域,中:中位数)。若待查找的元素与中位数相等,那么说明已经查找到想要查找的元素。否则就看待查找元素的值比中位数大还是小,如果小,就继续将左半部分分解成三个部分,如果大,就将右半部分分解成三个部分,以此类推。直到无法分解或找到待查找元素为止。1. 代码实现template&...

2018-03-24 20:39:34 103

原创 linux安装scrapy报错 Python.h: 没有那个文件或目录

安装scrapy的时候报错,其实这个错误是一个间接,由其依赖引起。 build/temp.linux-x86_64-3.4/twisted/test/raiser.o twisted/test/raiser.c:4:20: fatal error: Python.h: 没有那个文件或目录 include “Python.h” ^ compilation terminated.

2017-11-11 23:33:03 537

原创 gcc指定链接库路径后还是找不到库文件

问题描述:makefile中已经指定了库的路径和库的名字,编译时没报错,但程序运行时会报找不到库文件的错误。 解决办法: gcc中加上-Wl,-rpath=. 为什么? gcc -L选项在链接时指定动态库路径,编译通过,但是执行时会找不到路径; gcc -Wl -rpath选项在运行时指定路径,运行时按照指定路径寻找动态库; 也就是说处理动态链接库时有2个路径:链接时路径和运

2017-09-17 15:30:43 4263

原创 Docker的基本操作

0.安装docker在ubuntu下安装docker可以参考以下命令:sudo apt-get updatesudo apt-get install docker验证方法:docker version1.下载镜像docker的镜像和容器(可以看成是一个轻量级的虚拟机)的关系好比如类和对象的关系,镜像是一个模板,容器是镜像的一个实例。再具体点,举个栗子。我们想在windows的电脑上装个linux的

2017-09-16 00:47:27 232

原创 算法铺子之并查集(一)

0.并查集是啥?并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。1.并查集能干啥?并查集这种数据结构主要用来解决连接问题,什么叫连接问题呢?下面举个栗子,有一个图,里面有很多点,这些点可能和其他点是相连的。如下图所示,那么如果我想知道

2017-08-27 00:30:49 206

原创 Docker的各种概念

0.Docker是个什么鬼?Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 Docker通常用于如下场景:web应用的自动化打包和发布;自动化测试和持续集成、发布;在服务型环境中部署和调整数据库

2017-08-25 21:14:12 1162

原创 eclipse调试jdk源码

在看jdk源码的时候会想着去调试jdk的源码,但是Oracle提供的jre中rt.jar不带debug信息:orcale在编译src时使用了 javac -g:none,意思是不带任何调试信息,这样可以减小rt.jar的大小。若想正常调试jdk,就只能重新编译src.zip。下面将介绍编译jdk的方法,只需3步!1.在eclipse中新建一个java项目[jdk],然后在src目录上导入[Archi

2017-08-18 22:12:46 186

原创 ubuntu下安装redis

1.当然是下载redis啦wget http://download.redis.io/releases/redis-2.8.9.tar.gz2.下载了压缩包到本地后,肯定是要解压缩啦tar xvfz redis-2.8.9.tar.gz3.解压完成之后,妥妥先进到redis的目录中去进行编译、安装和测试cd redis-2.8.9sudo make //编译sudo make

2017-08-16 21:39:49 364 1

原创 算法铺子之排序---堆排序(二)

0. 上篇回顾在上一篇中对二叉堆的定义进行了阐述,并且对二叉堆存储方式,插入和删除操作的算法思想(shift up和shift down)进行了较为详细的分析。那么下面将对依靠堆这种数据结构的堆排序算法进行分析。1. 简单的堆排序假设需要对一个数组中的数据进行排序,我们可以将数组中的数据依次地插入到一个二叉堆中,然后再将堆中的所有元素都删除(提取最大值)并赋值给数组的相应位置即可使整个数组有序。(因

2017-08-13 23:29:51 254

原创 算法铺子之排序---堆排序(一)

0.堆排序简介堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。在分析堆排序算法之前,首先要

2017-08-10 23:05:08 232

原创 jdk源码学习笔记---Thread

初衷刚接触java不到2礼拜的小白试图通过阅读jdk的源码来学习java。如有理解或表达不对的地方,欢迎各位大佬指正,谢谢。0. 线程概述线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。**注意:**Java

2017-08-06 19:39:24 704

原创 leetcode_Third Maximum Number

Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).Example 1: Input: [3, 2, 1]Outp

2017-08-05 12:21:20 150

原创 算法铺子之排序---快速排序(二)

上一篇对普通的快速排序算法进行了分析并通过实验发现,普通的快速排序算法在碰到有大量重复数据的数据集时,很有可能会导致在parttion之后进行二分时,两个部分的划分失去平衡,然后退化成O(n^2)的算法。在这一篇中,将对前辈们针对这种问题而提出的双路快速排序算法和三路快速排序算法进行分析。0. 双路快速排序算法在上一篇的普通快速排序算法的实现中并没有考虑到当前考察的元素等于基准的情况,如图所示:也就

2017-07-30 11:39:51 211

原创 算法铺子之排序---快速排序(一)

0.快速排序简介快速排序是20世纪世界上最伟大的算法之一,顾名思义,这个算法能很快的对数据进行排序。而且在很多库的底层代码中也经常使用快速排序来实现排序的功能,比如jdk,stl等。1.快速排序的思想以升序为例。首先会找一个元素v作为基准,然后将整个待排序序列parttion成3个区域A,B和C。其中A区域为全部比v小的元素,B区域为全部等于v的元素,C区域为全部大于v的元素。此时B区域就成为了元素

2017-07-26 23:29:22 232

原创 jdk源码学习笔记--LinkedList

初衷刚接触java不到2礼拜的小白试图通过阅读jdk的源码来学习java。如有理解或表达不对的地方,欢迎各位大佬指正,谢谢。1. LinkedList类简介LinkedList是一个双链表,它也可以被当作堆栈、队列或双端队列进行操作。LinkedList实现List接口,能对它进行队列操作。LinkedList实现Deque接口,即能将LinkedList当作双端队列使用。LinkedList实现了

2017-07-25 23:57:16 280

原创 算法铺子之排序---归并排序

0.归并排序简介归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。若将k个有序表合并成一个有序表称为k路归并。1.归并排序的思想归并排序主要是通过分治法的思想来将一个大的

2017-07-24 23:01:55 230

原创 算法铺子之排序---插入排序

0.选择排序简介插入排序和选择排序同样是一种较为常见且容易实现的O(n^2)级别的排序算法,但插入排序的效率和待排序数据的有序程度有关系,待排序数据的有序程度越高,插入排序的效率也就越高,甚至有时候能比O(nlogn)级别的排序算法的效率还要高。所以插入排序也通常会成为其他排序算法的子过程。1.插入排序的思想插入排序的思路和我们打扑克牌时,整理扑克牌的思路是一样的,就是说将整个待排序数据序列看成两个

2017-07-24 12:49:13 197

原创 算法铺子之排序---选择排序

0.选择排序简介选择排序是一种简单的基于交换的排序算法,虽然效率不如O(nlogn)级别的排序算法,但是易于实现。1.选择排序的思想以升序排序为例,选择排序所做的事情无非是从待排序序列中找到最小的一个元素,然后与待排序序列中第1个元素进行交换(此时待排序序列已经从第2个元素开始),然后从待排序序列中找到最小的一个元素,然后与待排序序列中的第1个元素进行交换(此时待排序序列已经从第3个元素开始),就这

2017-07-24 10:25:09 139

原创 jdk源码学习笔记---ArrayList

初衷刚接触java不到2礼拜的小白试图通过阅读jdk的源码来学习java。如有理解或表达不对的地方,欢迎各位大佬指正,谢谢。1. ArrayList类简介ArrayList是一个数组序列,相当于一个动态数组。与Java中的数组相比,它的容量能动态的增长。并提供了一些列对外开放的接口供调用方维护这个数组序列中的数据。 ArrayList类的继承和实现体系如下图所示: ArrayList继承于Abs

2017-07-21 22:53:46 470 1

原创 jdk源码学习笔记---Character

初衷刚接触java不到2礼拜的小白试图通过阅读jdk的源码来学习java。如有理解或表达不对的地方,欢迎各位大佬指正,谢谢。0. Character类的用途1.对基本类型char进行包装,个人感觉从某种意义上来讲Character类是char的装饰器。2.对外开放的丰富的功能能够好的处理char型数据(基于unicode),提高代码的复用。1. Character类的继承和实现体系Character

2017-07-13 12:34:27 1601

原创 jdk源码学习笔记---Integer

jdk Integer类的源码分析

2017-07-11 13:57:41 508

原创 leetcode_Find All Numbers Disappeared in an Array

Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.Find all the elements of [1, n] inclusive that do not appear in this array.Could you

2017-07-10 16:19:42 139

原创 leetcode_Two Sum II - Input array is sorted

Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers suc

2017-07-10 12:11:38 168

原创 devstack部署问题记录

缺少libxml-dev,python-dev或版本不对等问题ubuntu下可以使用如下命令:sudo apt-get install aptitudesudo aptitude 组件名不能通过root用户来运行stack.shcd到devstack/tools目录下执行create-stack-user.sh,脚本执行完后会创建一个stack用户,切换至该用户来运行stack.shgene

2016-11-20 11:07:04 381

原创 ubuntu apt-get update异常解决方案

一般来说刚装上的ubuntu的默认源不太稳定,所以可以先修改源。sudo vi /etc/apt/sources.list以下为欧洲的源,挺好用的:deb http://archive.ubuntu.com/ubuntu hardy main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu hardy-secur

2016-11-17 23:36:38 883 2

原创 leetcode_Queue Reconstruction by Height

Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k), where h is the height of the person and k is the number of people in front of this p

2016-10-31 20:53:39 200

提示
确定要删除当前文章?
取消 删除