自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Matrix Factorization 学习记录(一):基本原理及实现

Matrix Factorization 学习记录(一):基本原理及实现最近在学习Matrix Factorization,也就是矩阵的分解。 这个技术目前主要应用于推荐系统领域,用于实现隐含语义模型(Latent Factor Model)。通过矩阵分解,一方面可以减少运算量,另一方面可以很好的解决由于用户数目和物品数目过多引起的行为矩阵稀疏化问题。我虽然暂时不去做推荐系统,但是我觉得这...

2018-06-05 20:06:38 9628 10

转载 Jacobian矩阵,Hessian矩阵和牛顿法

转自 : http://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/Jacobian矩阵在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式. 雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近. 因此, 雅可比矩阵类似于多元函数的导数.假设F:Rn

2017-02-28 11:15:54 4986

原创 tensorflow笔记:使用tf来实现word2vec

时隔若干个月,又绕到了word2vec。关于word2vec的原理我就不叙述了,具体可见word2vec中的数学,写的非常好。 我后来自己用Python实现了一遍word2vec,过程写在自己动手写word2vec (一):主要概念和流程以及后续的若干文章中我当时使用的是Hierarchical Softmax+CBOW的模型。给我的感觉是比较累,既要费力去写huffman树,还要自己写计算梯度的

2017-01-05 14:50:21 27673 21

原创 tensorflow笔记:模型的保存与训练过程可视化

保存与读取模型在使用tf来训练模型的时候,难免会出现中断的情况。这时候自然就希望能够将辛辛苦苦得到的中间参数保留下来,不然下次又要重新开始。好在tf官方提供了保存和读取模型的方法。保存模型的方法:# 之前是各种构建模型graph的操作(矩阵相乘,sigmoid等等....)saver = tf.train.Saver() # 生成saverwith tf.Session() as sess:

2016-12-28 19:47:11 23379 4

原创 ubuntu16.04下安装CUDA,cuDNN及tensorflow-gpu版本过程

这篇文章主要依据两篇文章: 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0 深度学习主机环境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow 不过在实际运行的过程中,有一定的不同之处,随着时间的推移,一些组件已经可以更方便的安装,不再需要自己编译了。一些流程也有所更改。因此我在这里把自己在ubuntu16.0

2016-12-19 00:52:46 51998 7

原创 electron开发记录(五):调用jquery,bootstrap并对其一些用法的总结

本文主要分两个部分,分别是在electron中调用jquery和bootstrap的方法以及为什么要这么调用,以及对jquery一些用法的总结。electron中调用jquery及bootstrap的方法jquery作为一个js库,能够很大程度上的简化对页面中元素的控制。而bootstrap作为css库,能够方便的写出好看的界面。调用bootstrap需要先调用jquery。在调用bootstrap

2016-12-13 16:05:40 10015 3

原创 electron开发记录(四):electron中组件的一些用法

之前讲了electron应用的基本框架和结构。现在来讲讲其中一些组件(BrowserWindow,Menu等)的一些用法。这些方法我是从electron-api-demo 以及electron官网上的文档中看来的,自己整理了下,挑了点我觉得有用和项目中用到的用法说一下主要内容: 1.BrowserWindow的用法 2.main进程与renderer进程间通信1. BrowserWindowBr

2016-12-08 12:06:27 6505 1

原创 electron开发记录(三):应用基本框架解析

这篇文章主要讲了electron应用的基本架构,并对之前下载的应用进行分析electron应用的基本架构在electron中,主要有两类进程。一类是主进程main,还有一类是渲染器进程renderer。主进程只有一个,负责对整个应用的管理,包括后台操作,创建GUI,以及处理GUI与后台的交互操作。但是光有主进程是无法显示应用窗口的,我们需要在主进程中调用BrowserWindow模块才能使用不同的窗

2016-12-02 16:44:08 7461 1

原创 electron开发记录(二):VisualStudioCode相关

这篇文章主要写的是跟vscode有关的内容.毕竟这次是打算拿vscode来开发应用的主要内容: 1.vscode的安装 2.使用vscode运行electron的demo 3.安装typings开启智能提示功能 4.vs的快捷键和其他设置1.VSCode安装VSCode的安装比较简单,去官网https://code.visualstudio.com 下载deb包,然后$ sudo dpkg

2016-11-29 22:29:09 6549

原创 electron开发记录(一):安装nodejs并运行demo

一些个人的唠叨(着急的人可以跳过)很久之前就想写图形化界面应用了,正巧最近又有一项任务需要做这个,正好实现之前的愿望。挑挑拣拣的,看了看wpf,好像通用性不够啊,还不能跨平台;再看看qt,太丑了;看来看去看中了electron, 本质上就是个能够与本地交互的网页。界面可以用别人的js库,自然不用担心不够酷炫,正适合写轻量化的应用。就是它了!再看了看网上关于electron的资料不是很多啊,那我就把我

2016-11-26 11:14:59 9217 1

原创 使用hadoop读写mysql

与mongodb相比,hadoop提供了内置的输入输出库DBInputFormat和DBOutputFormat,但是依然要使用JDBC驱动包com.mysql.jdbc.Driver。没有的可以去http://www.mysql.com/products/connector/ 下载。下下来后,只要把该包放在项目路径下即可,切莫在文件中import该包中内容,只要import java.sql.*

2016-11-17 18:04:30 2465

原创 使用hadoop读写mongodb

由于我之前爬取的微博数据都放在mongodb内,所以使用hadoop来处理mongodb内的数据是很自然的一种选择。 想要用hadoop读写mongodb内的数据,首先需要mongo-hadoop包。我是使用maven自动下载的,包名:org.mongodb.mongo-hadoop:mongo-hadoop-core 或者你也可以去http://search.maven.org/ 或者其他网站

2016-11-07 11:58:49 4099 2

原创 在idea上运行hadoop程序

本文的内容是如何让idea读取hdfs中的文件。 在开始前,我默认各位看官已经装好了hadoop。如果还没有安装hadoop,可以看这篇文章:linux下命令行安装hadoop2.7.2过程首先要将文本文件从本地移到hdfs中$hadoop fs -mkdir /tmp$hadoop fs -copyFromLocal /home/multiangle/download/280.txt /tmp

2016-11-03 15:17:42 4096

原创 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

最近在看Google的Deep Learning一书,看到优化方法那一部分,正巧之前用tensorflow也是对那些优化方法一知半解的,所以看完后就整理了下放上来,主要是一阶的梯度法,包括SGD, Momentum, Nesterov Momentum, AdaGrad, RMSProp, Adam。 其中SGD,Momentum,Nesterov Momentum是手动指定学习速率的,而后面的Ad

2016-11-01 00:31:23 73472 11

原创 深度学习笔记(六):Encoder-Decoder模型和Attention模型

这两天在看attention模型,看了下知乎上的几个回答,很多人都推荐了一篇文章Neural Machine Translation by Jointly Learning to Align and Translate 我看了下,感觉非常的不错,里面还大概阐述了encoder-decoder(编码)模型的概念,以及传统的RNN实现。然后还阐述了自己的attention模型。我看了一下,自己做了一些摘

2016-10-15 23:09:25 83013 13

原创 tensorflow笔记 :常用函数说明

本文章内容比较繁杂,主要是一些比较常用的函数的用法,结合了网上的资料和源码,还有我自己写的示例代码。建议照着目录来看。1.矩阵操作1.1矩阵生成这部分主要将如何生成矩阵,包括全0矩阵,全1矩阵,随机数矩阵,常数矩阵等tf.ones | tf.zerostf.ones(shape,type=tf.float32,name=None) tf.zeros([2, 3], int32) 用法类似,都是产

2016-10-13 11:29:57 97316 9

原创 tensorflow笔记:多层LSTM代码分析

tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析之前讲过了tensorflow中CNN的示例代码,现在我们来看RNN的代码。不过好像官方只给了LSTM的代码。那么我们就来看LSTM吧。LSTM的具体原理就不讲了,可以参见深度学习笔记(五):LSTM,讲的非常清楚。坦白说,这份写LSTM的代码有点难,

2016-10-08 17:33:34 148909 67

原创 tensorflow笔记:多层CNN代码分析

在之前的tensorflow笔记:流程,概念和简单代码注释 文章中,已经大概解释了tensorflow的大概运行流程,并且提供了一个mnist数据集分类器的简单实现。当然,因为结构简单,最后的准确率在91%左右。似乎已经不低了?其实这个成绩是非常不理想的。现在mnist的准确率天梯榜已经被刷到了99.5%以上。为了进一步提高准确率,官网还提供了一个多层的CNN分类器的代码。相比之前的一层神经网络,这

2016-10-03 18:05:44 46288 12

原创 tensorflow笔记:流程,概念和简单代码注释

tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果。这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一下,作为自己的备忘录。tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorfl

2016-09-27 08:13:18 67759 25

转载 深度学习笔记(五):LSTM

看到一篇讲LSTM非常清晰的文章,原文来自Understanding LSTM Networks , 译文来自理解LSTM网络Recurrent Neural Networks人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。 传

2016-09-21 11:04:46 34303 7

原创 深度学习笔记(四):循环神经网络的概念,结构和代码注释

深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 深度学习笔记(三):激活函数和损失函数 深度学习笔记(四):循环神经网络的概念,结构和代码注释本文的概念和结构部分摘自循环神经网络惊人的有效性(上),代码部分来自minimal character-level RNN language model in Python/numpy 我对代码做了详细的注

2016-09-18 10:13:28 20755 10

原创 深度学习笔记(三):激活函数和损失函数

这一部分来探讨下激活函数和损失函数。在之前的logistic和神经网络中,激活函数是sigmoid, 损失函数是平方函数。但是这并不是固定的。事实上,这两部分都有很多其他不错的选项,下面来一一讨论3. 激活函数和损失函数3.1 激活函数关于激活函数,首先要搞清楚的问题是,激活函数是什么,有什么用?不用激活函数可不可以?答案是不可以。激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么

2016-09-17 16:30:07 107185 9

原创 深度学习笔记(二):简单神经网络,后向传播算法及实现

在之前的深度学习笔记(一):logistic分类 中,已经描述了普通logistic回归以及如何将logistic回归用于多类分类。在这一节,我们再进一步,往其中加入隐藏层,构建出最简单的神经网络2.简单神经网络及后向传播算法2.1 大概描述和公式表达神经网络的大概结构如图所示, 从左往右,分别是输入层,隐藏层,输出层,分别记为x\mathbf x,h\mathbf h, y\mathb

2016-09-16 22:31:45 14850 4

原创 深度学习笔记(一):logistic分类

这个系列主要记录我在学习各个深度学习算法时候的笔记,因为之前已经学过大概的概念,所以这轮学习比较着重于公式推导和具体实现,而对概念上的描述不多,因此比较适合对此有一定基础的同学。 在正式开始写深度学习的知识之前,会有两节传统神经网络的内容,因为深度学习中大量运用了以往神经网络的知识。搞懂传统的神经网络如何工作是很有必要的,有助于对之后的学习打下坚实的基础。1. logistic分类几乎所有的教材都是

2016-09-16 11:28:49 23505 4

原创 使用gensim和sklearn搭建一个文本分类器(二):代码和注释

在之前的 使用gensim和sklearn搭建一个文本分类器(一):流程概述 中,叙述了一个使用lsi来对文本进行向量化,再使用线性核svm进行分类的文本分类器。在这篇文章中,沿着之前的思路,提供了该文本分类器的具体实现。该分类器对之前的流程进行了适当的整合,现在有五个主要流程: 生成词典生成tfidf向量生成lsi向量分类器参数训练对新文本进行分类。前4个步骤可以看做是分类器的训练过程

2016-09-12 17:49:00 8890 5

原创 使用gensim和sklearn搭建一个文本分类器(一):流程概述

总的来讲,一个完整的文本分类器主要由两个阶段,或者说两个部分组成:一是将文本向量化,将一个字符串转化成向量形式;二是传统的分类器,包括线性分类器,SVM, 神经网络分类器等等。之前看的THUCTC的技术栈是使用 tf-idf 来进行文本向量化,使用卡方校验(chi-square)来降低向量维度,使用liblinear(采用线性核的svm) 来进行分类。而这里所述的文本分类器,使用lsi (laten

2016-09-04 18:19:21 21198

原创 基于ftp实现一个类dropbox文件同步程序

最近要在实验室和宿舍两头跑,同一台电脑上还有win和linux等多个系统,想要在任何一个地点和平台上继续看之前的文献实在有点麻烦,只能拿U盘来拷,但是我的U盘又很容易掉,万一掉了那辛苦工作的成果可就全没了。你说网盘吧,百度网盘又不合我意,同步太麻烦了。最符合我想法的还是dropbox, 只要把文件丢在文件夹里面,就会自动帮你同步。但是dropbox被封了呀, 有人推荐金山快盘,跑去一看已经关了。其他

2016-08-31 00:02:51 2847

原创 异步爬虫: async/await 与 aiohttp的使用,以及例子

在python3.5中,加入了asyncio/await 关键字,使得回调的写法更加直观和人性化。而aiohttp是一个提供异步web服务的库,分为服务器端和客户端。这里主要使用其客户端。本文分为三步分,第一部分简单介绍python3.5的异步,asyncio/await 关键字。第二部分介绍aiohttp客户端部分的使用。第三部分是一个例子,列举了如何爬取CSDN某个博客中的所有文章。 1.

2016-08-23 23:47:46 29229 6

原创 linux下各数据库安装及相关知识

这一部分主要讲mysql , mongodb 和 redis的安装和相关操作。这三个在我的程序中都有用到,分别代表了关系型数据库,非关系型数据库,内存key-value数据库 1. MySQL1.1 安装$ sudo apt-get update$ sudo apt-get upgrade$ sudo apt-get install mysql-server$ sudo apt-get in

2016-08-19 21:51:37 1580

原创 gensim使用方法以及例子

gensim是一个python的自然语言处理库,能够将文档根据TF-IDF, LDA, LSI 等模型转化成向量模式,以便进行进一步的处理。此外,gensim还实现了word2vec功能,能够将单词转化为词向量。关于词向量的知识可以看我之前的文章关于gensim的使用方法,我是根据官网的资料来看的,思路也是跟着官网tutorial走的,英文好的或者感觉我写的不全面的可以去官网看 1. corpora

2016-08-16 10:58:58 53131 11

原创 搭建linux下的深度学习开发环境

最近越来越感觉到在win下开发简直浑身难受,各种lib需要逐个下载安装不说,到现在干脆在win下跑不起来了。无奈,只能打算转战linux平台。在搭建环境过程中碰到了各种问题,因此把碰到的一些问题及其解决方法写下来作为备忘。1. ubuntu的安装由于之前ubuntu使用的比较多,所以这次也顺理成章的选择了ubuntu. 关于ubuntu的版本,注意一定要选择新版本。目前(2016.8)的最新版本是

2016-08-07 10:55:55 10573

转载 语义分析的一些方法(二)

本文转自这里2 文本语义分析前面讲到一些文本基本处理方法。一个文本串,对其进行分词和重要性打分后(当然还有更多的文本处理任务),就可以开始更高层的语义分析任务。2.1 Topic Model首先介绍主题模型。说到主题模型,第一时间会想到pLSA,NMF,LDA。关于这几个目前业界最常用的主题模型,已经有相当多的介绍了,譬如文献[60,64]。在这里,主要想聊一下主题模型的应用以及最新进展(考虑到LD

2016-08-04 11:22:13 7694

转载 语义分析的一些方法(一)

原文转自这里语义分析,本文指运用各种机器学习方法,挖掘与学习文本、图片等的深层次概念。 wikipedia上的解释:In machine learning, semantic analysis of a corpus is the task of building structures that approximate concepts from a large set of documents(

2016-08-03 18:49:56 10932

原创 将Java中的内容直接存储为二进制文件

目前有这个需求,需要将java跑好的结果持久化,但是如果一个个输出为文本文件又不太好办,因为里面东西太多太杂,所以最好的办法是直接输出为二进制文件,把数据连同存储数据的类一起存进去,就行python中的pickle类所做的一样。在网上转了一圈,大部分是讲如何输出为文本文件的,所以在经过查询和调试以后,给出我自己的方法。要实现这个功能主要有两点,一是FileOutputStream和ObjectOut

2016-08-02 17:38:30 8568

原创 对希拉里泄露邮件进行简单分析的结果

这次爆出的邮件门十分劲爆啊,不过看了看邮件内容,如果进行NLP处理的话太过繁杂,所以选择了对收发邮箱间的关系进行简单分析。原文发在知乎上,这里就直接搬过来了。分析的代码放在github上1.首先来看收发邮件数在6000封邮件中,涉及了600个左右的邮箱 单看发送邮件的数目,前五强邮箱分别是kaplanj@dnc.org: 645封 MirandaL@dnc.

2016-07-28 11:00:09 4522 5

转载 word2vec 中的数学原理详解-基于 Negative Sampling 的模型

转自:http://blog.csdn.net/itplus/article/details/37998797我之前写的是基于Hierarchical Softmax的模型。而在word2vec中,还有一种基于Negative Sampling的模型。我虽然没写,但是觉得这种方法还是蛮有用的,所以把别人写的资料贴上来,便于复习

2016-07-20 17:35:02 7625

原创 自己动手写word2vec (四):CBOW和skip-gram模型

CBOW和skip-gram应该可以说算是word2vec的核心概念之一了。这一节我们就来仔细的阐述这两个模型。其实这两个模型有很多的相通之处,所以这里就以阐述CBOW模型为主,然后再阐述skip-gram与CBOW的不同之处。这一部分的代码放在pyword2vec.py文件中1.CBOW模型之前已经解释过,无论是CBOW模型还是skip-gram模型,都是以Huffman树作为基础的。而Huffm

2016-07-18 16:54:20 75876 23

原创 自己动手写word2vec (三):构建Huffman树

这一部分将解释Huffman树的构造方法,并说明了如何根据Huffman树来产生对应的二进制编码。这部分的代码放在HuffmanTree.py中Huffman树的构造Huffman树的构造方法与Huffman编码密切相关。 具体的做法可以用下列伪码来描述while (单词列表长度>1) { 从单词列表中挑选出出现频率最小的两个单词 ; 创建一个新的中间节点,其左右节点分别是之前的两

2016-07-16 17:38:10 18925 6

原创 自己动手写word2vec (二):统计词频

在我之前写的word2vec的大概流程中,第一步的分词使用jieba来实现,感觉效果还不错。第二步. 统计词频统计词频,相对来讲比较简单一些,主要在Python自带的Counter类基础上稍作改进。值得注意的是需要去掉停用词。所谓停用词,就是出现频率太高的词,如逗号,句号等等,以至于没有区分度。停用词可以在网上很轻易找到,我事先已经转化成二进制的格式存储下来了。这一部分的代码放在WordCount.

2016-07-14 10:55:24 18292

原创 自己动手写word2vec (一):主要概念和流程

word2vec 是 Google 于 2013 年开源推出的一个用于获取词向量(word vector)的工具包,它简单、高效,因此引起了很多人的关注。我在看了@peghoty所写的《word2vec中的数学以后》(个人觉得这是很好的资料,各方面知识很全面,不像网上大部分有残缺),为了加深理解,自己用Python实现了一遍。贴在我的github上系列所有帖子 自己动手写word2vec (一):

2016-07-11 22:35:14 56053 26

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