自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丁丁的博客

我是园丁,不在花园……

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

原创 语音 AI 技术简介

语音 AI 技术(e.g. 语音识别、语音合成)是人工智能重要的研究和应用方向。但是,不同于 CV、NLP 等“显学”,语音相关的从业人员(学界和业界)相对较少,语音领域的学术会议和期刊影响力也比较有限。比如语音顶级会议 ICASSP 也仅是 CCF-B 类,InterSpeech 更是被划在 C 类;并且两个会议接近 50% 的文章接收率也经常为人诟病。语音 AI 是一个多学科交叉的技术方向,涉及到信号处理、语言学、语音学(e.g. 发音规律)、心理学(e.g. 听觉感知)、传统机器学习以及深度学习等。

2021-07-18 14:38:03 4288 1

原创 【Learning Notes】Sequence Transducer

CTC独立性假设,各个 frame 的输出概率。 合理性:1。简化了模型;2。虽然独立于输出,但依赖输入。我们能做的更好吗? 输出概率依赖于之前的输出,更合理,显然许多问题是成立的(语音识别,识别结果应该符合某种习惯) Fig. 1. The RNN-T model. The model consists of an encoder network, which maps inp...

2018-07-28 12:56:14 6212

原创 【Learning Notes】PLDA(Probabilistic Linear Discriminant Analysis)

PLDA 是一个概率生成模型,最初是为解决人脸识别和验证问题而被提出[3,5],之后也被广泛应用到声纹识别等模式识别任务中。学者从不同的动机出发,提出了多种 PLDA 算法,文献[2] 在统一的框架下比较了三种 PLDA 算法变种(standard[3,6], simplified[4], two-covariance[5,8]),并在说话人识别任务上比较了它们的性能差异。本文讨论的 PLDA...

2018-04-21 23:19:15 9207 3

原创 基于 python 的语音识别 API 调用

腾讯 AI 开放平台 开放了语音、图像等多种 AI 功能接口。本文尝试基于 python 完成对语音识别接口的本地调用。1. 准备工作API 调用需要身份认证。我们首先需要注册并获得 AppID 和 AppKey。在官网注册后,进入控制台,创建一个新应用,并在接口选择栏,为应用勾选“语音识别”。应用创建成功后,记下 AppID 和 AppKey。2. 接口鉴权接口鉴权的...

2018-04-19 23:31:35 5762

原创 A Note on Kaldi's PLDA Implementation

Kaldi’s PLDA implementation is based on [1], the so-called two-covariance PLDA by [2]. The authors derive a clean update formula for the EM training and give a detailed comment in the source code. He...

2018-04-05 16:24:05 826 1

原创 【Learning Notes】线性链条件随机场(CRF)原理及实现

1. 概述条件随机场(Conditional Random Field, CRF)是概率图模型(Probabilistic Graphical Model)与区分性分类( Discriminative Classification)的一种接合,能够用来对“结构预测”(structured prediction,e.g. 序列标注)问题进行建模。如图1,论文 [1] 阐释了 CRF 与其他模...

2018-03-17 21:40:20 4964 1

原创 【Learning Notes】CTC 原理及实现

CTC( Connectionist Temporal Classification,连接时序分类)是一种用于序列建模的工具,其核心是定义了特殊的目标函数/优化准则[1]。 jupyter notebook 版见 repo.1. 算法这里大体根据 Alex Graves 的开山之作[1],讨论 CTC 的算法原理,并基于 numpy 从零实现 CTC 的推理及训练算法。...

2018-03-05 09:47:32 24215 21

原创 【Learning Notes】KMeans GMM 模型 及 EM 训练

kmeans 和 GMM 的简单实现及基于 EM 的训练。 jupyter notebook 版本见 repo。首先,导入相关的模块。from __future__ import print_functionimport numpy as npimport matplotlibimport matplotlib.pyplot as plt%matplotlib inl...

2018-03-03 09:38:23 925

原创 【Learning Notes】Gumbel 分布及应用浅析

1. 分布的形式化物理意义Gumbel 分布是一种极值型分布。举例而言,假设每次测量心率值为一个随机变量(服从某种指数族分布,如正态分布),每天测量10次心率并取最大的一个心率值作为当天的心率测量值。显然,每天纪录的心率值也是一个随机变量,并且它的概率分布即为 Gumbel 分布。概率密度函数(PDF)Gumbel 分布的 PDF 如下:f(x;μ,β)=e−z−e...

2018-02-24 23:33:32 39132 11

原创 基于 NVRTC 和 CUPY 的 Python CUDA 扩展

在之前的文章中,我们探讨了如何通过 cffi,扩展 pytthon (pytorch)。利用 cffi 方法,我们需要单独的 C 和 CUDA 源文件,还需要事先进行编译,不但过程比较繁琐,代码结构也稍显凌乱。对于一些简单的 CUDA 扩展(代码量不大,没有复杂的库依赖),显得不够友好。这里,我们介绍如何通过在线编译的方式,直接为 pytorch 提供 CUDA 扩展(当然,也可以是纯 C 的

2018-01-26 16:30:20 5447 2

原创 【Learning Notes】Quasi-recurrent Neural Networks

Quasi-recurrent Neural Networks (QRNN)

2017-09-12 20:02:14 5224

翻译 语音应用开发中的 11 个常见错误

语音应用开发中常见的误区

2017-09-05 13:45:54 1039

原创 AMD ROCm 平台简介

介绍 AMD 的 ROCm GPU 计算平台。

2017-07-08 14:26:36 36771 3

原创 【Learning Notes】基于 boosting 原理训练深层残差神经网络

Huang et al. Learning Deep ResNet Blocks Sequetially using Boosting Theory.文章指出一种基于 boosting(提升)原理,逐层训练深度残差神经网络的方法,并对性能及泛化能力给出了理论上的证明。1. 背景1.1 BoostingBoosting[1] 是一种训练 Ensemble 模型的经典方法,其中一种具体实现 GBDT

2017-06-17 00:28:00 3319

原创 keras CNTK 后端

试验 Keras 的 CNTK 后端。

2017-06-02 23:42:35 3118

原创 pytorch 学习笔记之编写 C 扩展

注,pytorch 0.4 提供了更加方便的工具来添加 C++ 扩展,参见这里及这里。pytorch利用 CFFI 进行 C 语言扩展。包括两个基本的步骤(docs):编写 C 代码; python 调用 C 代码,实现相应的 Function 或 Module。在之前的文章中,我们已经了解了如何自定义 Module。至于 [py]torch 的 C 代码库的结构,我们留...

2017-05-01 16:53:29 3582 1

原创 pytorch 学习笔记之自定义 Module

pytorch 是一个基于 python 的深度学习库。pytorch 源码库的抽象层次少,结构清晰,代码量适中。相比于非常工程化的 tensorflow,pytorch 是一个更易入手的,非常棒的深度学习框架。对于系统学习 pytorch,官方提供了非常好的入门教程 ,同时还提供了面向深度学习的示例,同时热心网友分享了更简洁的示例。1. overview不同于 theano,te...

2017-04-22 14:42:39 10154 2

原创 智能音箱技术概览

概述智能音箱的软硬件技术。

2017-03-21 16:38:20 28375 5

原创 【Learning Notes】生成式对抗网络(Generative Adversarial Networks,GAN)

简单介绍各种生成式对抗网络(GAN)

2017-03-14 10:18:13 8971 2

原创 【Learning Notes】变分自编码器(Variational Auto-Encoder,VAE)

简单介绍变分自编码器(Variational Auto-Encoder,VAE)实现和原理。

2016-12-14 17:48:49 69277 20

原创 模型压缩之 BinaryNet

1. 动机深度学习在图像、语音、文本等领域都取得了巨大的成功,推动了一系列智能产品的落地。但深度模型存在着参数众多,训练和 inference 计算量大的不足。目前,基于深度学习的产品大多依靠服务器端运算能力的驱动,非常依赖良好的网络环境。很多时候,出于响应时间、服务稳定性和隐私方面的考虑,我们更希望将模型部署在本地(如智能手机上)。为此,我们需要解决模型压缩的问题——将模型大小、内存占用...

2016-12-03 16:13:02 14508 3

原创 基于表达式模版(expression template)的惰性求值(lazy evaluation)

基于模版的惰性求值

2016-11-30 11:11:00 1529

原创 神经网络端到端序列学习(一)

许多重要问题都可以抽象为变长序列学习问题(sequence to sequence learning),如语音识别、机器翻译、字符识别。这类问题的特点是,1) 输入和输入都是序列(如连续值语音信号/特征、离散值的字符),2) 序列长度都不固定,3)并且输入输出序列长度没有对应关系。因此,传统的神经网络模型(DNN, CNN, RNN)不能直接以端到端的方式解决这类问题的建模和学习问题。解决变长序列的

2016-11-26 15:33:49 17416 1

原创 【Learning Notes】作为 Ensemble 模型的 Residual Network

以模型 Ensemble 的思路分析 Residual Network 成功的原因。

2016-11-20 17:40:07 4769

原创 为 OpenCL 提供支模版支持

OpenCL本身(至少目前)并不支持模版。在许多场景下(例如移植CUDA代码),这会带来一些麻烦。 这里,我们介绍一种解决方案。主要思路是,利用OpenCL在运行时编译的特点,通过宏定义实现类似C++模型的功能。首先我们要解决动态获取类型名称的问题 解决方法如下:template<typename T>struct TypeParseTraits { static const ch

2015-06-23 15:05:49 1923

原创 静态集成 OpenCL 的 Kernel 源代码到可执行文件

在编写OpenCL代码时,为了方便起见,我们更喜欢将kernel源代码放在单独的文件中(一般为*.cl)。这各做的缺点在于,程序需要在运行时动态读入文件中的代码为字符串,然后再传递给OpenCL的RT编译、执行。因此,在可执行文件之外,我们还需要单独分发*.cl文件。下面,我们介绍一种简单的技巧,将*.cl文件在编译时静态的包含在可执行文件中。首先,将所有源代码由”STRINGFY()”括起来。

2015-06-23 14:26:38 3599

原创 Matlab数据可视化(5):二维数据可视化 I

以下介绍数据的二维可视化。一. 二维散点图(源代码:scatter.m)我们用著名的Iris数据集(Fisher, 1936)作为绘图实例。Iris数据集包含3种鸢尾花的150个样本数据,每个数据都有4个属性(花萼和花瓣的长度及宽度)。1) 基本散点图我们用其中两个属性值作为X和Y轴,另一个属性值表示点的大小。(图1)%% 加载数据集[attrib classNam

2013-06-13 16:34:42 13869 2

原创 Matlab数据可视化(4):一维数据绘图 II

五. 结点连接图(node link plot)(源代码:NodeLinks.m)有时,我们需要绘制出不同结点之间的连通关系,即结点连接图。以下以绘制美国128座城市之间的连通关系为例,介绍两种结点连接图的画法。1) 定义每座城市与距它最近的城市连通,与其余视为不连通,然后根据连通性,利用gplot命令,直观的绘出结点连接图。(图9)%% #1%% 定义数据[XYCoord

2013-06-11 18:18:00 9200

原创 Matlab数据可视化(3):一维数据绘图 I

以下介绍一维数据的可视化。一. 饼状图、根状图和梯形图1) 饼状图(源代码:pie_stem_stairs.m)饼状图可以直观地表示百分比的相对大小。饼状图可以由matlab的pie命令绘制。其中,我们可以将某些数据从饼中分离以强调显示(图1)。Expenses = [20 10 40 12 20 19 5 15];ExpenseCategories = {'食品',

2013-06-09 08:34:02 13789

原创 Matlab数据可视化(2):基础篇 II

五. 添加图例(源代码legends.m)在图像包含较多图形时,适当的图例对快速、正确的理解图像反映的信息是必不可少的。以下一个实例可以说明精心设计图例的重要性。我们在一幅图像中,同时绘出10个不同均值和方差的正态分布曲线。数据可以由如下代码生成,或直接加载10NormalDistributions.mat% stdVect and meanVectstdVect = [.49,

2013-05-21 19:12:02 4640

原创 Matlab数据可视化(1):基础篇 I

本文在《MATLAB Graphics and Data Visualization Cookbook》一书的基础上,介绍Matlab数据可视化方法。 我们假设读者已经具备Matlab的基本知识(了解Matlab的语法,能够使用Matlab进行数据的读取、运算等操作),并能熟练地查阅相关的Matlab函数。未经特殊说明,所有图像都在Matlab 2013a 环境下绘制(源码下载)。一. 绘

2013-05-21 05:32:16 12003 3

原创 随机数生成(一):均匀分布

引言许多应用中都需要用到随机数,如物理仿真、统计采样、密码学、博彩等。随机数一般可以通过两种方法得到。一种是基于物理现象由硬件产生。由此得到的随机数,在产生之前是不可预知的,因此,是真正的随机数。另一种是通过计算机算法产生。通过算法产生的随机数在本质是可以预知,但是在统计上,满足一定的随机性要求,因此一般称作“伪随机数”。伪随机数要比真正的随机数更容易获取,而且在大多数情况下都能满足应用的

2012-09-11 16:17:02 26426 2

翻译 Halide:简化图像编程

原文来自MIT News只要我们稍微留意一下Instagram便不难发现,图像处理软件的有着的广阔的市场前景。Facebook正在试图用10亿元收购这家从事图像处理业务的公司。以往人们主要通过计算机来向网络上传照片;但现在,越来越多的人却选择直接通过手机发送。因此图像处理也逐渐在移动终端变得流行。同时,现在的数码图片普遍非常大,不借助好的软件工具,即使是在台式机上也需要花费很长的时间业处理。工

2012-08-06 09:03:37 4892

原创 Intel 超线程技术(Hyper-Threading Technology)

我们经常会提到两种“线程”(thread)。一种线程存在于操作系统(OS)中。对OS而言,进程是资源分配的基本单位,每个程序在一个进程中分配相应的内存等系统资源。而每个进程可以包含多个“线程”。这些线程共享进程分配的资源,但是独立地被OS调度执。我们可以称这种线程为“软线程”。另一种线程则是我们将要介绍的,因为它与处理器密切相关,我们不妨称之为“硬线程”。可以认为,这两种线程除了名称相

2012-08-01 02:08:20 11277

翻译 HPC:大规模是祝福还是诅咒?

By Gary M. Johnson: Too Big to FLOP? From HPCWire在高性能计算(HPC)的领域前沿,我们一般认为计算机系统的规模越大越好,用户也需要规模更大的计算机。不过,在我们着手开发计算速度超过petaflops(10的15次方浮点运算每秒)量级的计算机,并向着exaflops量级的目标努力之时,我们的这些观点依然正确吗?计算机是否已经变得过于庞大,

2012-07-29 04:42:12 2311

空空如也

空空如也

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

TA关注的人

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