自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Alex.W.的机器学习之路

格物穷理,知行合一

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

原创 RuntimeError: NCCL error in:torch/lib/c10d/ProcessGroupNCCL.cpp:514, invalid usage, NCCL version 踩坑

运行pytorch分布式任务时,可能在执行dist.barrier()这条代码时会触发NCCL错误:RuntimeError: NCCL error in: ../torch/lib/c10d/ProcessGroupNCCL.cpp:514, invalid usage, NCCL version。

2022-10-29 15:32:19 4134

原创 在分布式系统中使用ffmpeg -- python

ffmpeg是常用的用来处理视频的工具,它的功能非常强大,包含了丰富的音视频处理接口,如视频格式转换,音视频分离、添加水印等。出于效率上的考虑,ffmpeg是基于c编写的,所以在使用之前通常需要编译安装。想要在分布式集群上面用ffmpeg,需要在每台机器上安装ffmpeg或者用预先编译好的包。本文将详细介绍如何在分布式集群上使用预先编译好的ffmpeg包。1、imageio-ffmpeg自动...

2019-03-17 19:10:21 875

原创 深度学习迁移模型BERT详解

2018年google AI组发表的一篇文章BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding在多个自然语言处理问题上取得了很大的提升。      BERT是一个迁移学习模型,在双向深度网络Transformer (https://arxiv.org...

2019-01-01 15:43:25 8734

原创 施密特正交化及QR分解(附实现代码)

施密特正交化      施密特正交化(Gram-Schmidt Orthogonality)是常用的求欧式空间正交基的方法。给定一个线性无关向量组a1,a2,...,ama_1,a_2,...,a_ma1​,a2​,...,am​,经过施密特正交化可以得到一组正交向量组b1,b2,...,bmb_1,b_2,...,b_mb1​,b2​,...,bm​,正交向量组中...

2018-12-26 21:18:55 13565 6

原创 numpy array转化成base64编码

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,通常用来在HTTP环境下传递较长的数据。本文介绍opencv 图像、1维或者2维numpy 矩阵转化成base64的方法。这几种方法的思路相同:先把numpy转化成字符串,然后再用base64编码。OpenCV图像转base64      OpenCV图像的数据类型也是numpy 2维数组,...

2018-11-24 16:10:04 13326

原创 TensorFlow restore部分变量

有时候我们需要在Tensorflow中restore图的部分变量,比如我们想把两个已经训练好的子图合并成一个大图;或者我们在训练完一个网络结构后对其进行扩展,并且保留已经训练好的部分不变;又或者要对graph的几个部分交替进行训练。      Tensorflow在restore模型的时候是严格按照变量名的对应关系赋值的。例如在构建的Graph里有个name='...

2018-09-25 22:21:00 4168

原创 python控制台颜色打印

在控制台打印时添加颜色信息,可以更清晰的展示和区分内容。例如重要的信息可以加加粗和下划线,error信息可以用红色下划线表示。本文介绍如何用python在控制台打印添加颜色、下划线、高亮等使得展示的信息更加清晰直观。例如:    在python控制台打印带有颜色、特殊显示方式的字符串,其主要原理是用特殊的字符来标记展示形式:格式:\033[显示方式;前景色...

2018-08-25 23:20:32 3731

原创 tensorflow decode base64 解析图像

Base64是网络上最常见的用于传输字节码的编码方式之一,可用于在HTTP环境下传递较长的信息。如果要通过Http调用tensorflow服务完成图像分类或者检测等任务,就需要用base64来传递图像信息。tensorflow也提供了函数decode_base64来解析图像。tensorflow decode_base64函数的使用方法如下:def base64_decode_im...

2018-06-27 20:32:24 3694

原创 dlib检测人脸landmarks

     人脸landmarks在人脸分析上有很大的作用,可以利用landmarkers进行人脸校正(alignment),也可以通过landmarkers计算五官之间的距离来对人脸建模,判断美丑等。     dlib(http://dlib.net/)提供了很友好的检测人脸landmarkers的接口。下图是一个68个点的landmarkers检测结果,可以通过数字对应到五官,例如27~30是检...

2018-05-12 22:11:38 5751

原创 Vim常用命令和配置

1、Vim常用快捷键:(1)删除:x:删除当前字符   nx:连续向后删除n个字符dd:删除整行ndd:向下删除n行diw:删除光标所在的单词,不包括空白字符daw:删除光标所在的单词,包括空白字符dw:从当前位置删除到下一个单词词首dG:从当前位置到文件末尾的内容全部删除dj:删除一行        d4j:删除4行D:删除到行尾的内容    (2)插入:i:光标之前插入   I:在行首插入a:...

2018-03-28 22:03:33 259

原创 OpenCV位运算实现图像融合

OpenCV在计算机视觉处理方面提供了很多强大的工具,使用OpenCV可以很容易的对图像进行各种算数运算,本文主要介绍通过位运算把两张图片融合成一张图片,可用于添加水印等。      在网上随意找了两张图,一张是google logo,一张是deep learning图片:      使用OpenCV把google logo作为水印添加到deep learning图上,最终

2018-01-31 22:51:36 1251

原创 tensorflow 轻松实现自己的目标检测

图像分类和目标检测是计算机视觉两大模块。相比于图像分类,目标检测任务更复杂更困难。目标检测不但要检测到具体的目标,还要定位目标的具体位置。不过Tensorflow models上大神们的无私奉献已经使得目标检测模型平民化,只需要按照特定的格式准备好训练数据,就可以轻松训练出自己想要的目标检测模型。本文通过一个例子介绍如何通过Tensorflow models快速构建目标检测模型。准...

2018-01-21 23:00:17 19645 36

原创 Conda虚拟环境

Conda是一个虚拟环境和软件包管理系统,当需要在一台机器上测试不同配置的python时,可以用conda轻松创建相互隔离的环境。conda管理虚拟环境的常用命令如下:conda虚拟环境:conda create -n envnameconda激活虚拟环境:source activate envnameconda退出虚拟环境:source deactivateconda列出所有

2017-11-11 21:46:23 4961

原创 深度学习目标检测之RPN-based方法

目标检测是机器学习领域很重要也很具有挑战性的一个分支,目标检测需要同时完成图像分割和子图分类两项task,比图像分类更具难度。最近几年,深度学习在图像处理上有很多成功的尝试,而目标检测领域也出现了一些很好的方法。本文主要介绍RPN-based的系列方法,包括R-CNN、Fast-RCNN和Faster-RCNN。    RPN-based(RPN:Region Proposal Network)目

2017-10-07 23:56:39 3707

原创 flask快速搭建tensorflow http服务

tensorflow是目前最受欢迎的deep learning框架之一,在学术界和产业界都有广泛的使用。在如何部署tensorflow模型提供远程调用服务方面官方提供了tensorflow serving框架,详细的介绍可以参考官网资料:https://tensorflow.github.io/serving/。本文主要介绍另一条部署服务的途径:利用flask快速搭建tensorflow http服

2017-08-05 19:13:44 11286

原创 在Spark上进行两个大数据集的匹配

分布式框架Spark把任务划分到各个子节点进行处理,可以有效利用小机器的CPU来处理大规模数据集。但是Spark也存在局限性,在某些问题的处理上会力不从心,例如两个大数据集的匹配。出现这种问题的原因主要是分布式系统的优势在于机器的数量,子节点的CPU和内存通常配置较低。问题描述:如果有两个大数据集A和B,假设A有几千万条数据,B有几百万条数据,需要把B中的每一条数据和A中的每一条数据进行比较。下面

2017-07-09 22:59:52 7230 4

原创 hadoop命令OutOfMemoryError GC

使用hadoop命令对hdfs文件系统进行操作时(例如getmerge、put等)可能会遇到OutOfMemoryError这样的异常,如下图: 解决方法:增大hadoop client的最大内存占用限制。 命令: export HADOOP_CLIENT_OPTS=”-Xmx10g”,具体是10g还是其他数值可以根据自己机器的具体情况调整。

2017-05-12 15:17:41 1630

转载 HOG(方向梯度直方图)

结合这周看的论文,我对这周研究的Histogram of oriented gradients(HOG)谈谈自己的理解:HOG descriptors 是应用在计算机视觉和图像处理领域,用于目标检测的特征描述器。这项技术是用来计算局部图像梯度的方向信息的统计值。这种方法跟边缘方向直方图(edge orientation histograms)、尺度不变特征变换(scale-invariant fe

2017-04-07 15:43:03 1025

转载 Tensorflow Serving 模型部署和服务

本文转载自:https://zhuanlan.zhihu.com/p/233614132016年,机器学习在 Alpha Go 与李世石的世纪之战后变得更加炙手可热。Google也在今年推出了 TensorFlow Serving 又加了一把火。TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接

2017-03-31 19:27:23 37416 2

原创 调用jupyter notebook文件内的函数一种简单方法

python开发环境jupyter notebook良好的交互式和模块化受到很多python开发人员的青睐,但是jupyter notebook是以json格式保存文件内容的,而不是python文件那样的普通格式,所以不能直接被python解析器解析,如何调用.ipynb中的module也成为一个问题。本文介绍一种方法,使得只要在我们的工作目录下放置一个python文件,就可以正常调用其他jupyt

2017-03-28 11:13:39 51127 38

原创 Tensorflow 数据预读取--Queue

Google开源的深度学习框架Tensorflow在数据预取上做了一些特殊的特征来提高模型训练或者推理的效率,避免在IO上耗费过多的时间。本文通过几个简单例子介绍Tensorflow构建queue常用函数的使用方法。    深度学习训练模型通常是建立在大数据基础上,一般情况下可以把数据都加载到内存避免训练时数据读取IO。但是,当数据占用空间较大,如图片集或者视频集,无法全部载入内存;另一种方式是在

2017-01-25 11:20:39 9118

原创 Maven导入本地jar包

软件项目管理和发布工具Maven给java的开发带来了很多的方便。需要引用其他jar包的时候只需要在pom.xml添加相关的依赖,maven就会自动解析依赖、下载jar包,更新jar包也只需要修改version字段,大大简化了jar包的引用。但是有时候我们要用的某几个包在maven上不存在,只能下载jar包到本地并添加到java项目中,然而问题随之而来:maven只能打包pom.xml里面声明的依赖

2017-01-15 18:55:24 43466 4

原创 TensorBoard--TensorFlow可视化

TensorBoard是TensorFlow极为有用的工具,可以用来记录和跟踪学习过程中网络结构节点的变化(Event、Images),展示整个网络结构,对于程序的结构检验、调试和优化有很大的帮助。本文用一个卷积神经网络(CNN)演示如何使用TensorBoard以及使用过程中遇到的一些问题。代码最后的graph结构图: 一、示例代码:1、加载数据MNISTimport tutorials.m

2016-11-22 20:40:49 8341 2

原创 Mysql批量更新/插入数据

当操作的数据量很大时,相比于单条更新/插入,批量更新/插入数据能显著减少操作时间。本文通过几个简单的例子介绍如何用executeBatch进行批量操作,以及在批量操作中常见的几个坑。        首先在数据库中新建一张表用于测试:create table stuInfo(id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,stu_n

2016-10-16 13:43:41 881

原创 Spark变量访问总结

Spark程序在变量的访问方式上与传统的java程序有一些不同,导致了传值和结果上的差异。本文通过一组实验来分析Spark对各种形式变量的处理方式。        下面这个简单的小程序创建了 - 静态变量staticVariable、静态广播变量staticBroadcast、静态累加器staticAccumulator; - 成员变量objectVariable、成员广播变量objectBr

2016-09-25 20:55:28 5682

原创 Spark把RDD数据保存到一个单个文件中

Spark是当前最流行的分布式数据处理框架之一,相比于Hadoop,Spark在数据的处理方面更加灵活方便。然而在最近的使用中遇到了一点小麻烦:Spark保存文件的的函数(如saveAsTextFile)在保存数据时都需要新建一个目录,然后在这个目录下分块保存文件。如果我们想在原有的目录下增加一个文件(而不是增加一个目录),Spark就无能为力了。        有网友给出建议,用rddx.rep

2016-09-03 11:26:37 43643 7

原创 稀疏矩阵存储格式

当运算数据数量很大且稀疏的时候,使用稀疏的数据存储格式可以节省大量的存储空间且加快计算速度。本文介绍三种比较常见的稀疏矩阵表示方式:COO(Coordinate Format坐标表示),CSR(Compressed Sparse Row行压缩),CSC(Compressed Sparse Column列压缩)。1、COO:Coordinate Format COO格式使用行下标、列下标和数据值三元

2016-08-08 09:52:21 10290 4

原创 Spark Reduce TypeError: 'int' object has no attribute '__getitem__

在使用Reduce这个函数需要特别注意的一点是,reduce必须要求输入与输出是相同类型,例如:>>> rddx = sc.parallelize([('a',1),('b',2),('c',5)])>>> rddx.reduce(lambda x,y:x[1]+y[1]) #报错 TypeError: 'int' object has no attribute '__getitem

2016-07-31 16:20:44 8991 1

原创 java正则表达式总结

从JDK1.4开始,java提供了正则表达式API接口。正则表达式接口函数位于java.util.regex包中。正则表达式主要用于pattern的匹配,基于pattern匹配,可以完成字符串查找、字符串替换、字符串分割等任务。1、字符串匹配:可以直接用字符串进行匹配,或者先对pattern进行编译//第一个\对第二个\进行转义System.out.println("31120

2016-05-13 21:19:46 1130

转载 机器学习算法复习-谱聚类

来自http://www.cnblogs.com/wentingtu/archive/2011/12/22/2297426.html如果说 K-means 和 GMM 这些聚类的方法是古代流行的算法的话,那么这次要讲的 Spectral Clustering 就可以算是现代流行的算法了,中文通常称为“谱聚类”。由于使用的矩阵的细微差别,谱聚类实际上可以说是一“类”算法。Spec

2016-04-25 23:50:55 1639

原创 区分bootstrap、bagging、boosting和adaboost

前言: bootstrap、bagging、boosting和adaboost是机器学习中几种常用的重采样方法。其中bootstrap重采样方法主要用于统计量的估计,bagging、boosting 和 adaboost方法则主要用于多个子分类器的组合。一、bootstrap:估计统计量的重采样方法    bootstrap方法是从大小为n的原始训练数据集D\mathcal{D}中随机选择n个

2016-02-15 16:07:18 10541

原创 PCA和SVD区别和联系

前言: PCA(principal component analysis)和SVD(Singular value decomposition)是两种常用的降维方法,在机器学习等领域有广泛的应用。本文主要介绍这两种方法之间的区别和联系。一、PCA:    PCA的中文名叫做主成分分析,是降维和去噪的一种重要方法。PCA选取包含信息量最多的方向对数据进行投影。其投影方向可以从最大化方差或者最小化投

2016-02-07 11:51:07 50582 15

原创 五个例子掌握theano.scan函数

一、theano的工作原理    在theano编程中,Graph是指导theano如何对变量进行操作的唯一途径,theano变量和theano Ops(操作)是Graph的两个基本构成元素。Graph只能由theano变量(包括shared变量)或常数组成。如图所示:     通常可以按如下步骤构造Graph:首先声明theano变量,theano变量在python文件中的作用范围和普通pyth

2016-01-14 16:32:03 13190 3

原创 推荐系统笔记四、基于内容的推荐系统

一、概述: 基于内容的推荐系统(CBRSs)从item和用户的内容描述中提取出item的内容特征和用户偏好,根据用户对item的评价历史和item之间的语义(内容)相似度进行推荐。    基于内容推荐系统的高层次结构如图所示,主要包括三部分内容(图中圆角矩形):Content Analyzer(内容分析),从无结构化的数据(如文本)中抽取出结构化数据(如词向量表示);Profile Learn

2016-01-11 17:03:05 4971

原创 推荐系统笔记三、基于近邻的推荐系统(进阶篇)

一、概述: 基于近邻的推荐算法在推荐系统中占有重要的地位,是学术界的一个重点研究方向,在产业界也得到了广泛的应用。基于近邻的推荐算法大致可以分为user-based和item-based两类,关于近邻推荐算法的基础性介绍,请参见博文: “推荐系统笔记一、基于近邻的推荐系统(基础篇)”。由于user-based方法和item-based方法的相似性,本文主要讨论item-based方法上的一些技术

2016-01-09 22:31:48 1747

原创 从LeNet-5看卷积神经网络CNNs

一、概述: 自从2010年Hinton大神团队使用深度学习(Deep Learning)算法在 ImageNet 比赛中获得冠军之后,深度学习算法的触角在计算机视觉、语音识别、自然语言处理等领域不断延伸,并且在这些领域都取得了极大的成功。而2015年的ImageNet比赛也到处都是深度学习算法的影子。深度学习建立在各种神经网络结构的基础上,借助于GPU和大数据,使得深层的神经网络也能被很好的学习

2016-01-07 23:10:30 12116

原创 推荐系统笔记二、矩阵分解协同过滤

一、概述: 矩阵分解模型是把用户偏好和item属性投影到同一个隐因子空间(latent factor space),以用户偏好和item属性的匹配程度来预测评分。通常推荐系统可以用于模型训练的信息主要有用户的显式反馈、隐式反馈和时间信息等。显式反馈(explicit feedback):用户直接表明对item的兴趣,例如评分[1,2,3,4,5]. 隐式反馈(implicit feedback)

2016-01-05 20:45:27 7924

原创 推荐系统笔记一、基于近邻的推荐系统(基础篇)

Recommender Systems Handbook 第一版(2008年)是推荐系统方向入门的经典。7年后,第二版(2015年)终于诞生了,加入了这几年推荐系统领域的最新技术,又是state-of-the-art了吧,开始读书加笔记整理。。。概述:    协同过滤方法大致可以分成两类:基于近邻(neighborhood-based)的算法和基于模型(model-based)的算法。基于近邻的算

2016-01-03 15:49:44 3592

原创 Logistic Regression详解

两类情况:Logistic函数:      Logistic Regression的核心是Logistic函数,损失函数的构造也正是利用了Logistic函数的特点。Logistic函数形式如下: δ(a)=11+e−a\begin{equation} \delta (a) = \frac{1}{1 + e^{-a}}\end{equation} 从图中可以发现,当aa接近6时,函数值

2016-01-01 21:50:13 3830

原创 Theano权重子集更新

新入门Theano,官方文档最后一节讲到Theano中部分权重(权重子集)更新问题“How to update a subset of weights?”,按照教程自己写了一个实例,但是f = theano.function(…, updates=updates)报错。Bug信息提示,updates = inc_subtensor(subset, g*lr)得到的是一个tensor类型,而updat

2015-12-27 22:20:07 1371

空空如也

空空如也

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

TA关注的人

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