原文:https://distill.pub/2017/ctc/
Hannun A. Sequence modeling with ctc[J]. Distill, 2017, 2(11): e8.
下面是连结时序分类(CTC)的一个可视化指导图,CTC是一种用于在语音识别,手写识别和其他序列问题中训练深度神经网络的算法。
原文:https://distill.pub/2017/ctc/
Hannun A. Sequence modeling with ctc[J]. Distill, 2017, 2(11): e8.
下面是连结时序分类(CTC)的一个可视化指导图,CTC是一种用于在语音识别,手写识别和其他序列问题中训练深度神经网络的算法。
在训练深度学习模型的时候,尤其是大规模深度学习模型的训练,我们可能会遇到一些问题,比如觉得计算速度不够快,或者显存不够用,然而,我们却无法为了提升速度或者降低存储空间占用,从而缩小模型的规模或者数据输入输出的尺寸等。这时,我们可以通过多GPU并行计算来解决这一问题。在Keras框架中,虽然本身内置了一些可以多GPU并行计算的API,但是似乎不起作用而且还常常报错。这里有一份基于TensorFlow后端实现的多GPU并行计算的模块,在Keras上亲自测试通过,可以起到通过多卡扩展显存空间和取得加速比的作用。
如今,我们需要在硬盘中存储大量的数据,尤其是存储用于机器学习的数据集。通常来讲,如果有一份数据,需要让多台计算机都能够访问,但是某些计算机由于硬盘存储空间不足,不能够拷贝一份副本在本地存放,或者为了节省总体的存储空间占用,或者为了当其中一些内容发生改变时,所有的计算机都能够获取到更新,那么,我们可以通过在其中一台计算机上搭建私有云存储服务器集中存储数据,并通过高速内网(通常使用千兆网络)互联,使得每一台计算机对其的访问都与本地存储无异。
因为是青葱岁月, 我们不曾深涉世谙; 但也因为懵懂年少, 我们才拥有无限的可能。我们的青春舞动在这些年难忘的时光里,我们的汗水挥洒在这几栋往来的教学楼里,我们的梦想腾飞在这片通向未来的土地上,我们的记忆不会忘掉这些年一起走过的日子。每年,我们都要经历一次春夏秋冬的轮转,但有一种夏天,叫做我们的毕业季。
人类对于语音识别领域相关技术的研究,从上世纪的50年代初就已经开始了,当时的科研人员就曾对语音发音的音素特征做了相关研究。在1952年时,贝尔(Bell)实验室的研究人员,通过使用模拟的电子器件,实现了针对特定说话人说英文数字的孤立词进行语音识别的功能。这个系统主要是提取发音中每个元音的共振峰信息,然后通过简单的模板匹配,从而实现的。该系统得到了98%的正确率[1]。
朴素贝叶斯分类器(naïve Bayes classifier)是机器学习中的一种假设特征之间强独立的基于贝叶斯定理的简单概率分类器。朴素贝叶斯自20世纪50年代起就已经广泛研究,具有快速易实现的优点,这种机器学习方法在有适当的预处理时,可以与这个领域包括支持向量机在内的更先进的方法相竞争[1]。本文将主要介绍朴素贝叶斯分类器算法的原理,并以一个小实例解释其在实际中是如何应用的。
mnist手写数字识别是入门深度学习,或者学习一个新的深度学习框架时,最容易上手的程序。本文中,我将使用mxnet深度学习框架在mnist数据集上实现一个简单的手写数字识别模型。
2019年3月,计算机领域的最高奖——图灵奖,颁发给了深度学习的三位创造者Yoshua Bengio, Yann LeCun,和Geoffrey Hinton。这三位科学家对深度学习基本概念的发明,做出的令人们轰动的实验,对工程领域和深度神经网络实际应用的贡献,使得他们的得奖当之无愧。
我们在使用Keras训练深度学习模型时,往往不能一次将数据全部加载进内存中,那样会导致内存不足的问题。包括Keras在内的深度学习框架提供了动态数据加载的模式,也就是说,需要使用到哪些数据时,才会加载哪些数据,而Keras需要我们自己定义一个数据生成器,并通过多线程的机制调用我们传入的数据生成器,克服硬盘的IO速度瓶颈,以实现数据的动态加载。
在计算机多线程编程中,线程之间的安全问题是很重要的,它不仅关系到所需要的功能能否正确地实现,还关系到算法运行结果的稳定性等问题。当在多线程编程时,或者使用到的软件框架是具有多线程运行功能的时候,一名训练有素且技术过硬的合格程序员是会考虑程序在多线程环境下运行时的线程安全问题的,尤其是在多个线程间存在共享的资源的情况下。博主最近在使用Keras框架做深度学习训练的时候,就遇到了这样的问题,多线程时,Python的普通生成器会遇到异常。本文主要介绍两种实现多线程之间线程安全的方案,同步和加锁。