自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 KMP算法、AC自动机算法的原理介绍以及Python实现

KMP算法 要弄懂AC自动机算法,首先弄清楚KMP算法。 这篇文章讲的很好: http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 结合这篇文章,我说下我的理解 比...

2019-05-10 15:21:20 584 0

原创 python项目“内存泄漏”的调试过程

现象: 在压测的过程中,服务消耗的内存不断飙升,使用的内存大大超过了它可能消耗的内存大小 首先是内存泄漏的几个可能原因: 1、存在循环引用,gc不能释放; 2、存在全局对象,该对象不断的变大,占据内存; 3、使用了c或者c++扩展,扩展内存溢出了; 1、首先检查代码,把代码中可能发生内存...

2019-04-29 09:56:01 1438 0

原创 服务超时实战分析

开发服务的时候,经常发现客户端超时的情况,但是从服务端的日志来看又都比较正常,下面是我项目中遇到的一些不同的超时情况。 业务场景: 基于一段长文本,划出文本中的内链 我主要遇到过如下三种场景的超时 1、客户端query太长 服务对这个query的处理消耗的时间比客户端设置的...

2019-04-29 09:46:57 193 0

原创 不重启服务如何定时更新进程中的一个对象

场景: 主进程中初始化了一个对象(C++模块的对象,占用内存比较大,因为加载了一个很大的词表),然后启动子进程,并在子进程中使用这个对象,子进程对这个对象只读,不写 这个对象需要周期性的更新,因为要在对象中重新加载一些数据 如何不重启服务来更新这个对象呢? 首先: ...

2019-03-01 10:30:46 252 0

原创 Redis底部的几种存储结构(sds、dict、ziplist、intset、skiplist)

首先本文参考的是这个系列的文章: https://mp.weixin.qq.com/s?__biz=MzA4NTg1MjM0Mg==&mid=509777776&idx=1&sn=e56f24bdf2de7e25515fe9f25ef57557&a...

2019-01-08 17:36:02 1059 0

原创 Redis慢日志问题解决

现象: 无线词条页访问失败 问题分析: 1、首先,查看日志 日志中非常显眼的是,从Redis读取词条的pv耗时很长,高达20多秒, 看样子是访问Redis速度很慢导致 2、查看Redis的慢日志 > SLOWLOG GET 可以得到如下结果: 25) 1) ...

2018-12-10 16:53:32 942 0

原创 写磁盘太慢导致服务超时问题分析

服务逻辑:      接收客户端的请求参数,写文件到本地磁盘   问题发现:      客户端报超时, 每天日志理论上是有几万条的,但是近几天只收到了几条   问题分析:      其实最开始的时候,以为是服务端处理不过来导致的,因为最开始服务端只有两个服务进程,后来增加了服务进程数...

2018-12-10 12:11:43 679 0

原创 tornado异步请求响应速度的实例测试

为什么要用异步处理? 大部分Web应用(包括我们之前的例子)都是阻塞性质的,也就是说当一个请求被处理时,这个进程就会被挂起直至请求完成。在大多数情况下,Tornado处理的Web请求完成得足够快使得这个问题并不需要被关注。然而,对于那些需要一些时间来完成的操作(像大数据库的请求或外部API),这...

2018-12-06 18:53:17 906 0

原创 scrapy自定义网页中图片的下载策略

自定义的初衷是:想修改保存文件的默认名称, 我们希望保留图片原始的文件名。 此外,scrapy图片的下载过滤策略是用了过期时间,可以通过在settings.py中配置如下参数来设置图片的过期时间: IMAGES_EXPIRES = 90 但是对我们抓取百度百科的业务,一张图片如果已经抓取过,...

2018-11-30 18:48:16 195 0

原创 scrapy自定义Request的缓存策略(减少内存占用)

scrapy-redis大概的架构: 从redis中拉url,构造Request对象,写入SCHEDULER_QUEUE_CLASS定义的队列中,调度器从队列中拉取Request进行抓取 想自定义Request的初衷主要是为了减少内存的占用,当然虽然我们的内存消耗的也不是那么多,也就几个G ...

2018-11-30 11:01:23 859 0

原创 scrapy中自定义过滤规则以及start_urls不进过滤器的问题

为什么要自定义过滤规则呢? 首先,我们需要过滤,但是不是说抓一次就不抓了,因为我们的抓取是一段时间抓取一次 自定义策略如下: 首先我试图直接继承RFPDupeFilter 在settings.py同级的目录下新建dupefilter.py文件,按照网上说的方法,写了内容如下 from s...

2018-11-29 19:22:10 1507 0

原创 请求方报超时,服务日志中记录的时间却少有超时

请求方报超时的比例大概有4% 他们设置的超时时间是500ms 但是我们统计日志,服务时间超过500ms的日志很少 原因是什么呢?   超时原因分析: 1、请求内容太长 根据请求方超时日志, 大多数query的长度都是1w以上,这些query我手动请求,响应时间的确大于500ms, 在...

2018-11-27 14:19:44 771 0

原创 日志中每段代码执行时间的和不等于整段代码执行的总时间

代码逻辑: def  getInlink()      A  -> B  -> C ->  D   在tornado中调用getInlink @tornado.gen.coroutine     def get(self):        ...

2018-11-22 10:10:21 122 0

原创 日志中每段代码执行时间的和不等于整段代码执行的总时间

代码逻辑: A  -> B  -> C ->  D   实践中,分别记录了上面四个步骤执行的时间, 假设为At, Bt, Ct, Dt,并且记录了整个4步的时间,假设为ADt 发现4个代码片段的时间的和不等于总的时间, 也就是:         ...

2018-11-21 19:24:06 78 0

原创 压测中提高并发数后服务端处理时间增长的原因分析

后端逻辑:  接收请求、分词匹配、读redis做一些过滤策略 在不断提高并发数的压测过程中,发现一个问题,后台服务对一个请求的处理时间也在增高, 而且增高的主要时间是消耗在读redis过滤那块 过滤那块的主要逻辑是:从redis中读数据,并基于这些数据做一些过滤的策略 为什么这块的耗时会增长...

2018-11-20 15:02:35 1075 0

原创 两台机器实现QPS3000的服务优化

服务流程:      输入为一句话, 分词、匹配百科词条,读redis过滤、从redis读词条summary信息、返回   需求:      业务方的峰值QPS为3000   按照之前相关百科的一套逻辑: 单机tornado服务进程数4个 模拟10个并发,压测的QPS为332, 响应...

2018-11-16 19:41:18 619 0

原创 一次Redis任务队列积压的问题分析与解决

目前的流程: 两个Redis: Redis1: 存储词条的summary信息 Redis2:任务队列,用于暂存Redis中没有summary,需要进行处理获取summary, 队列用的Redis的list结构 两个进程: 1、 进程1:服务进程 接收请求,划内链词,然后从Red...

2018-11-16 11:32:32 2369 0

原创 tf.layers.conv1d函数解析(一维卷积)

一维卷积一般用于处理文本,所以输入一般是一段长文本,就是词的列表 函数定义如下: tf.layers.conv1d( inputs, filters, kernel_size, strides=1, padding='valid', data_format='...

2018-11-14 15:09:10 19864 13

原创 二维卷积神经网络的结构理解

针对这个图,我们对应着卷积的api函数来说: tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) 如上图: 第一列为一张输入图像, 大小为7*7*3, 即宽高为7*7, 通道数为3...

2018-11-14 15:07:13 1855 0

原创 个人对stacking的思想理解

主要分为几个基础模型,一个元模型 对于基础模型,采用K折交叉的方式来采样数据,并分别进行训练,这样对于每个模型,都会用K组采样数据来进行训练,从而得到K个不同的模型版本 假设现在基础模型有KNN,SVM, 那么对基础模型训练后会得到如下几个模型: KNN_model1, KNN_model2...

2018-11-14 15:05:50 246 0

原创 preprocessing.StandardScaler中fit、fit_transform、transform的区别

1、fit 用于计算训练数据的均值和方差, 后面就会用均值和方差来转换训练数据   2、fit_transform 不仅计算训练数据的均值和方差,还会基于计算出来的均值和方差来转换训练数据,从而把数据转换成标准的正太分布   3、transform 很显然,它只是进行转换,只是把训练...

2018-11-14 15:04:15 9120 0

原创 sklearn相关积累

sklearn的参考教程: https://morvanzhou.github.io/tutorials/machine-learning/sklearn/3-5-save/   1、 解决的问题 分类、回归、聚类和特征降维 sklearn中有很多数据库可以用来练习   2、交叉验证...

2018-11-14 15:02:54 157 0

原创 机器学习中遇到的问题

1、ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory 找不到so库文件 用自己的账户运行包会报上面的错误,但是用root账户运行却没有问题 原因:root账户里面的...

2018-11-14 14:59:29 723 0

原创 客户端请求时间和服务端处理时间不匹配问题

现象: 客户端日志,调一个接口耗时为2-3s 服务端日志,处理一个请求耗时只有100-200ms 问题: 这明显速度不匹配, 理论上差不了太多才对 分析原因: 可能是服务端处理不过来,虽然一个请求服务端处理的时间很短,但是客户端请求响应的时间主要是消耗在等待被处...

2018-11-14 14:54:26 1415 0

转载 从Encoder到Decoder实现Seq2Seq模型

参考文章:  https://zhuanlan.zhihu.com/p/27608348

2018-09-12 19:12:59 936 0

原创 ab测试post如何用文件提交json格式的参数

在网上找了很多方法都失败 首先我的参数是这样的: 服务端需要一个名称为data的参数 值为:"{'title': "刘德华"}", 即值是一个json格式的字符串 错误方法: ab -n10000 -c10 -T applic...

2018-08-28 15:56:06 1393 0

原创 用Docker容器自带的tensorflow serving部署模型对外服务(成功率100%)

前传: 相信很多人和我一样,在试图安装tensorflow serving的时候,翻遍了网上的博客和官网文档,安装都是以失败而告终,我也是一样,这个问题折磨了我两个星期之久,都快放弃了。幸运的是在同事的建议下,我采用了一种迂回的策略安装成功了。 我们采用的策略是: pull一个已...

2018-08-27 10:36:36 10040 13

转载 机器学习算法实践-SVM中的SMO算法

前言 前两篇关于SVM的文章分别总结了SVM基本原理和核函数以及软间隔原理,本文我们就针对前面推导出的SVM对偶问题的一种高效的优化方法-序列最小优化算法(Sequential Minimal Optimization, SMO)的原理进行总结并进行相应的Python实现。 坐标上升算法(...

2018-07-27 10:59:31 1041 0

转载 KKT条件

KKT条件介绍        最近学习的时候用到了最优化理论,但是我没有多少这方面的理论基础。于是翻了很多大神的博客把容易理解的内容记载到这篇博客中。因此这是篇汇总博客,不算是全部原创,但是基础理论,应该也都差不多吧。因才疏学浅,有纰漏的地方恳请指出。       KKT条件是解决最优化问题的...

2018-07-27 10:29:02 491 0

转载 dropout为什么有效

开篇明义,dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。dropout是CNN中防止过拟合提高效果的一个大杀器,但对于其为何有效,却众说纷纭。在...

2018-07-06 16:03:58 908 1

转载 MLP多层感知机(人工神经网络)原理及代码实现

一、多层感知机(MLP)原理简介多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:从上图可以看到,多层感知机层与层之...

2018-07-05 11:23:19 16135 0

原创 基于sigmoid的文本多标签分类模型代码实现

sigmoid一般是用来做二分类的,它是将一个标量的数字转换成[0,1]之间的一个概率值,如果概率值大于0.5, 则判定为是某个分类,否则则不是某个分类,公式如下: 本文基于sigmoid做了一个将一段长文本打上多个标签的算法模型,首先声明,我的模型最终的效果不好,因为我的文本很长,而且采用...

2018-07-05 10:45:01 3814 4

原创 如何用softmax和sigmoid来做多类分类和多标签分类

首先,说下多类分类和多标签分类的区别 多标签分类: 一个样本可以属于多个类别(或标签),不同类之间是有关联的,比如一个文本被被划分成“人物”和“体育人物”两个标签。很显然这两个标签不是互斥的,而是有关联的 多类分类: 一个样本属于且只属于多个分类中的一个,一个样本只能属于一个类,不同类之间...

2018-07-04 17:07:28 9150 5

原创 基于softmax的文本多分类模型代码实现

对于多分类问题,可以使用softmax来做,但是效果不是那么好,当做一个算法的练手吧首先是数据集处理的代码:文件名:data_loader.py# coding: utf-8 import sys from collections import Counter import pdb import...

2018-07-04 15:59:34 1379 0

转载 softmax实现多分类算法推导及代码实现

关于多分类我们常见的逻辑回归、SVM等常用于解决二分类问题,对于多分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM,只是需要多个二分类来组成多分类,但这里讨论另外一种方式来解决多分类——softmax。关于softmax如何多分类从下图看,神经网络中包含了输入层,然后通...

2018-07-03 10:40:53 6035 1

转载 Attension Mechanism模型的详细介绍,原理、分类及应用

模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理、分类及应用Attention是一种用于提升基于RNN(LSTM或GRU)的Encoder + Decoder模型的效果的的机制(Mechanism),一般称为Attention Mechanism。Attention...

2018-06-28 18:39:42 1230 0

转载 朴素贝叶斯分类器的例子

一、病人分类的例子让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。某个医院早上收了六个门诊病人,如下表。  症状  职业   疾病  打喷嚏 护士   感冒   打喷嚏 农夫   过敏   头痛  建筑工人 脑震荡   头痛  建筑工人 感冒   打喷嚏 教师   感冒   头痛 ...

2018-06-12 11:32:57 588 0

转载 支持向量机(SVM)

参考地址: https://blog.csdn.net/Left_Think/article/details/76726568

2018-06-04 15:08:16 136 0

转载 一文详解LDA主题模型

【本文作者】达观数据 夏琦【作者简介】夏琦,达观数据NLP组实习生,就读于东南大学和 Monash University,自然语言处理方向二年级研究生,师从知识图谱专家漆桂林教授。曾获第五届“蓝桥杯”江苏省一等奖、国家二等奖。前言本篇博文将详细讲解LDA主题模型,从最底层数学推导的角度来详细讲解,...

2018-05-24 20:34:08 2224 0

原创 matplotlib画折线图中文乱码解决

说到底,乱码的原因是因为没有安装中文字体导致的,所以首先要做的就是安装一个中文字体。报表中发现有中文乱码和中文字体不整齐(重叠)的情况,首先考虑的就是操作系统是否有中文字体,在CentOS 7中发现输入命令查看字体列表是提示命令无效:  如上图可以看出,不仅没有中文字体,连字体库都没有,那么接下来...

2018-05-23 14:33:43 1261 0

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