自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liuyanfeier的专栏

小白进阶之路

  • 博客(215)
  • 收藏
  • 关注

转载 k-means聚类算法的详解和实现

一、相异度计算 在正式讨论聚类前,我们要先弄清楚一个问题:如何定量计算两个可比较元素间的相异度。用通俗的话说,相异度就是两个东西差别有多大,例如人类与章鱼的相异度明显大于人类与黑猩猩的相异度,这是能我们直观感受到的。但是,计算机没有这种直观感受能力,我们必须对相异度在数学上进行定量定义。      设 ,其中X,Y是两个元素项,各自具有n个可度量特征属性,那么X和Y的相异度定义为: ,其中R为

2017-08-29 10:51:06 6090 1

原创 简单教程-word2vec处理英文语料

word2vec是google的开源文本处理工具,可以将词处理成向量变成神经网络的输入。word2vec官网其中提供了一个text8英文语料供我们学习。下载地址:http://mattmahoney.net/dc/text8.zip 网上有很多教我们处理维基百科里面的数据然后变成我们的学习语料的,感兴趣的可以去试试。 该text8语料编码格式UTF-8,所有的数据存储为一行,没有标点符号。我们也

2017-08-09 15:16:52 9425 2

原创 python批量修改文件名

我有一个目录下有很多文件,但是文件的命名比较混乱,一个一个改有比较麻烦,所以我就写了一个python脚本来做批量更改。# coding: utf-8'''import osnum = 0for file in os.listdir('raw_data/'): #os.listdir('.')遍历文件夹内的每个文件名,并返回一个包含文件名的list if file[0:9] !=

2017-08-01 14:41:20 1883 2

原创 shell-grep中的正则表达式

介绍ls /usr/bin | grep zip这个命令会列出,位于目录 /usr/bin 中,文件名中包含子字符串“zip”的所有文件。这个 grep 程序以这样的方式来接受选项和参数:grep [options] regex [file...]这里的 regx 是指一个正则表达式。 下面是grep的常见options列表:-i:模式匹配时忽略大小写-V:显示不匹配的行-l:列出匹配模式的文

2017-07-25 16:51:00 2778

原创 python-二进制读写存取

python的pickle模块可以很方便的进行序列化的操作,将一个Python对象序列化为一个字节流,以便将它保存到一个文件、存储到数据库或者通过网络传输它。但是当我们直接使用pickle的时候,保存的字节流无法被例如C等其他语言读取。所以Python提供了一个struct模块,用来处理Python数据和C/C#等数据之间的转换。struct模块的内容不多,也不是太难,下面对其中最常用的方法进行介绍

2017-07-21 11:41:45 2474

原创 在 Ubuntu 15.10 下编译 GCC 4.3

本文将介绍如何在 Ubuntu 15.10 下编译 gcc 4.3. 有时候我们可能需要使用低版本的gcc去编译很久之前的代码,但是 Ubuntu 15.10 最低的gcc版本都是4.7了,再前面的版本已经不能直接安装了,需要我们自己去下载源码编译。本文就是整个编译安装的过程。首先检查你是否已经安装binutils 。 ld -v 查看binutils版本 在此之前建议更新下软件源代码,执行如下命

2017-07-07 15:23:28 1187

原创 Linux C 多线程编程

简介进程— 资源分配的最小单位 线程— 程序执行的最小单位进程是一个程序的一个实例,拥有自己独立的各种段(数据段,代码段等等),每次创建一个进程需要从操作系统分配这些资源给他,消耗一定的时间,在linux下C语言创建一个进程使用fork()函数; 线程是一个轻量级的进程,除了自己少数的资源,不用用其他资源,且一个进程可以创建多个线程,这些线程共享进程的资源,创建线程的时间要比创建进程少很多,(几

2017-07-04 16:44:41 15851

原创 char short int long float double等字节大小基础信息

C类型 字节(32位) 字节(64位)char 1 1 short int 2 2 int 4 4 long int 4 8 long long int 8 8 float 4 4 double

2017-04-19 20:15:26 9027

原创 sigmoid和softmax函数的C++实现

float sigmoid(float x){ return (1 / (1 + exp(-x)));}float sigmoid_dy_dz(float x){ return (x * (1.0 - x));}float tanh_dy_dz(float x){ return (1.0 - x*x);}//对每一行进行softmaxvoid softmax(

2017-03-17 15:36:13 14671

原创 C语言文件操作

打开文件fopen我们可以使用fopen()创建一个新的或者打开一个文件, 文件信息会保存在一个FILE类型的指针中, 该函数的原型为:FILE *fopen( const char * filename, const char * mode );filename是文件名, mode是打开模式, 可选值如下:r - 以只读方式打开一个文件, 该文件必须存在w - 以只写方式打开一个文件, 文件

2017-03-17 14:27:21 857 1

原创 数组与指针

数组数组是指具有相同类型的数据组成的序列,是有序集合。(教科书上的定义) 即:数组就是内存中一段连续的存储空间。那么我们怎么使用它呢?用数组名。也就是我们用数组名可以在内存中找到对应的数组空间,即数组名对应着地址。对应着首元素的地址,所以,我们可以通过数组的首元素地址来找到数组数组名是一个地址(首元素地址),即是一个指针常量。 只有在两种场合下,数组名并不用指针常量来表示:sizeof(数组名

2017-03-17 11:35:38 438

原创 linux后台执行命令:&和nohup

当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。& 当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh &

2017-03-16 14:34:40 368123 12

原创 Linux下的打包和解压缩命令

先直接给出各种解压缩命令.tar压缩:tar cvf FileName.tar FileName解压:tar xvf FileName.tar--------------------------------------------- .gz解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz

2017-03-16 14:09:11 73609 2

原创 epoch和iteration的区别

epoch——使用整个训练样本集传播一次。一次传播 = 一次前向传播 + 一次后向传播。(所有的训练样本完成一次Forword运算以及一次BP运算)但是考虑到内存不够用的问题,训练样本们往往并不是全都一起拿到内存中去训练,而是一次拿一个batch去训练,一个batch包含的样本数称为batch size。iteration——使用batch size个样本传播一次。同样,一次传播 = 一次前向传播

2017-03-09 17:56:25 3089

原创 感知器Perceptron

//perceptron.h#ifndef PERCEPTRON_H__#define PERCEPTRON_H__#include <stdio.h>#include <stdlib.h>#include <string.h>#include <string>class perceptron{public: float *weights; //权重 float b

2017-03-09 17:47:36 428

原创 trie字典树实现

实现了一个简单的字典树. 假设所有的字符只有26个小写字母,并且除了节点出现的次数之外还增加了类似map功能的索引。 假如不只有26个字母,需要相应的做一些修改。#include <stdio.h>#include <string.h>#include <stdlib.h>#define ALPHABET_SIZE 26int num = 0;typedef struct trie_nod

2017-03-09 14:33:14 355

原创 C语言字符串读取函数 gets()与fgets()

在c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回。如果要读取一行字符串,比如:I love BIT这种情况,scanf()就无能为力了。这时我们最先想到的是用gets()读取.gets()函数从标准输入(键盘)读入一行数据,所谓读取一行,就是遇到换行符就返回。gets()函数并不读取换行符’\n’,它会吧换行符替换成空字符’\

2017-03-09 14:22:12 15623 1

原创 C语言二进制文件读写以及大小端转换

因为工作需要所以需要将文件用二进制方式读取。网上资料比较少,所以我再次把自己的实践过程mark一下。 并且由于代码可能需要在不同的机器上运行,所以还需要考虑一下大小端转换问题。 先看下面的代码,然后我在简短的解释一下。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <string>#define nmemb

2017-03-09 11:37:25 10878

原创 HTK英文大词汇连续语音识别

最近实习,跑了一下htk book里面的前三章描述的例子。当然不是完全htk book里面的步骤,因为我有的数据集什么的都不一样。目标也不是一个小的语音拨号系统,而是英文的语音识别。当然了,最终结果出来了之后很低,还有很多过程要走。语音识别,肯定不是我这样小打小闹就可以的。本文就主要记录我在训练过程中的步骤以及遇到的一些error。一.已有文件 目前已经准备好的文件有一系列的flac文件还有字典t

2017-01-06 17:38:09 2844

原创 Python I/O文件操作

打开和关闭文件Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。open 函数你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。 语法:file object = open(file_name [, access_mode][, buffering])各个参数的细节如下: f

2016-12-21 11:08:50 573

原创 Python中的列表(list),元组(Tuple),字典(Dict)和集合(Set)

一,列表(list) python内置的一种数据类型是列表:list是一种有序的数据集合,可以随意的添加和删除其中的数据。比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表的。不知道有没有人和我一样,刚刚接触列表对于说的这个有序不是很懂,不知道是什么有序。等我自己查资料的时候才知道,这个有序不是说list中的元素自己自动排好了序,而说的是这下面的这种情况:定义一个列表使用一对中

2016-12-18 23:20:33 26124 6

原创 python for和while循环语句实例教程

循环体可以包含一个语句,也可以包含多个语句,但是却不可以没有任何语句。那么,如果我们只是想让程序循环一定次数,但是循环过程什么也不做的话,那该怎么办呢?当然是有办法的,因为Python为我们提供了一个pass语句,该语句什么也不做,也就是说它是一个空操作。#输出10以下的非负整数中的偶数print '10以下的非负整数中的偶数为:'for integer in range(10):# range

2016-12-17 23:22:30 3741

原创 Python逻辑操作符

刚开始看python,觉得这个逻辑操作符和其他语言有些区别,所以就记录下来。 Python的逻辑操作有三种:and、or、not。分别对应与、或、非。严格的说,逻辑操作符的操作数应该为布尔表达式。但Python对此处理的比较灵活。 即使操作数是数字,解释器也把他们当成“表达式”。 非0的数字的布尔值为1,0的布尔值为0. 在Python中,空字符串为假,非空字符串为真。非零的数为真。对于an

2016-12-16 19:34:10 1809

原创 C++设计模式——单例模式

何为单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点, 该实例被所有程序模块共享。 首先,需要保证一个类只有一个实例;在类中,要构造一个实例,就必须调用类的构造函数,如此,为了防止在外部调用类的构造函数而构造实例,需要将构造函数的访问权限标记为private或者protected;最后,需要提供要给全局访问点,就需要在类中定义一个static函数,返回在类内部唯一构造的实例。实现方法

2016-10-16 13:48:01 250

原创 拷贝构造函数

一.定义: 就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。 自定义拷贝构造函数:1. //拷贝构造函数 2. CExample(const CExample& C) 3. { 4. a = C.a; 5. } CExample(const CExample& C) 就是我们自定义的拷贝构造函数。可见,拷贝构造函数

2016-10-16 13:44:59 298

原创 虚函数与纯虚函数

1.虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class), 任何试图对抽象类进行实例化的语句都将导致错误的产生,因为抽象基类(ABC)是不能被直接调用的。(父类的函数为虚函数,那么子类中重写的该函数自动设为虚函数,不管有没有virtual关键字)2.虚函数可以

2016-10-16 13:39:33 266

原创 class和struct的区别

struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class还能有什么区别? 最本质的一个区别就是默认的访问控制: 默认的继承访问权限 struct是public的,class是private的。 你可以写如下的代码:struct A{ char a;};struct B : A{

2016-10-16 13:38:42 349

原创 堆(heap)和栈(stack)的区别

一. 程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 : 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全

2016-10-16 13:37:11 404

原创 浅谈C++多态性

多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算作是体现了C+

2016-10-16 13:35:42 243

原创 C++11新特性

什么是C++11 C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、decltype,和模板的大量改进。1.auto C++11中引入auto第一种作用是为了自动类型推导 auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推导,可以大大简化我们的编程工作 auto实际上实在编译时对变量进行了类型推导,所以不会对程序的运行效率造成

2016-10-16 13:34:44 282

原创 野指针

野指针 野指针不是空指针,是一个指向垃圾内存的指针。 形成原因: 1.指针变量没有被初始化。 任何指针变量被刚创建时不会被自动初始化为NULL指针,它的缺省值是随机的。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如: char* p = NULL; char* str = (char*)malloc(102

2016-10-16 13:29:42 251

原创 类的大小——sizeof 的研究

先看一个空的类占多少空间? class Base { public: Base(); ~Base(); }; 注意到我这里显示声明了构造跟析构,但是sizeof(Base)的结果是1.不申明或者是用struct也是一样的,结果为1.因为一个空类也要实例化,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一

2016-10-16 13:27:34 320

原创 C++智能指针简单剖析

智能指针是一个类,这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针。智能指针的类都是栈上的对象,所以当函数(或程序)结束时会自动被释放。 1. 智能指针背后的设计思想 auto_ptr、unique_ptr和shared_ptr这几个智能指针背后的设计思想。我简单的总结下就是:将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不同基本类型的需求),并在析构函数里编写dele

2016-10-16 13:22:49 534

原创 各种C++关键字的作用

一. static static关键字至少有下列5个作用: (1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; (3)限制函数的作用域,在模块内的sta

2016-10-16 13:18:08 1587

原创 指针和引用的区别

1.指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元; 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。int a=1;int *p=&a; //定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。int a=1;int &b=a; //定义了一个整形变量a和这个整形a的引用b,事实上a和b是同一个东西

2016-10-16 13:13:27 196

原创 IP地址分类

IP地址就是给因特网上的每一个主机(或者路由器)的每一个接口分配一个独一无二的32位标识符。IP地址分类,就是每一类地址都由两个固定长度的字段组成,第一个字段为网络号(net-id),第二个字段为主机号(host-id)。从上图可以看出来,A,B,C类地址的网络号分别为1,2,3个字节。常用的三类IP地址 A类地址的网络号占一个字节,只有七位可以使用(第一位固定为0),可指派的网络号为

2016-10-11 12:53:58 838

原创 OSI七层模型与TCP/IP四层模型

TCP/IP协议簇 学习的时候往往综合OSI和TCP/IP ,采用一种只有五层协议的体系结构(c)。一. 应用层 应用层是体系结构中的最高层,直接为用户正在运行的程序提供服务。应用层协议有:支持万维网(www)的HTTP,支持电子邮件的SMTP,支持文件传送的FTP等。二. 运输层 运输层的任务是负责为两个主机中进程之间的通信提供服务。由于一个主机可以同时运行多个进程,因此

2016-10-11 12:53:37 351

原创 三次握手和四次挥手

为什么采用三次握手而不是二次握手? client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,

2016-10-11 12:53:01 751

原创 电路交换与分组交换

网络通信大致分为两种:电路交换,分组交换。 TCP/IP采用分组交换技术。 在电路交换中,交换机主要负责数据的中转处理。计算机连接到交换机中,交换机与交换机之间通过通信线路继续相连。所以计算机之间发送数据的时候,需要通过交换机建立通信线路。 如果一条线路上连接了多台计算机,并且计算机之间需要互相通信。就会出现问题,因为一台计算机在通信的时候会独占线路,其他计算机只有等待当前计算机通信完成之后才

2016-10-11 12:52:34 889

原创 http和https的区别

一. HTTP(默认端口80) http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输

2016-10-11 12:52:04 295

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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