为Keras包装一个线程安全的数据生成器

我们在使用Keras训练深度学习模型时,往往不能一次将数据全部加载进内存中,那样会导致内存不足的问题。包括Keras在内的深度学习框架提供了动态数据加载的模式,也就是说,需要使用到哪些数据时,才会加载哪些数据,而Keras需要我们自己定义一个数据生成器,并通过多线程的机制调用我们传入的数据生成器,克服硬盘的IO速度瓶颈,以实现数据的动态加载。

继续阅读“为Keras包装一个线程安全的数据生成器”

通过同步和加锁解决多线程的线程安全问题

在计算机多线程编程中,线程之间的安全问题是很重要的,它不仅关系到所需要的功能能否正确地实现,还关系到算法运行结果的稳定性等问题。当在多线程编程时,或者使用到的软件框架是具有多线程运行功能的时候,一名训练有素且技术过硬的合格程序员是会考虑程序在多线程环境下运行时的线程安全问题的,尤其是在多个线程间存在共享的资源的情况下。博主最近在使用Keras框架做深度学习训练的时候,就遇到了这样的问题,多线程时,Python的普通生成器会遇到异常。本文主要介绍两种实现多线程之间线程安全的方案,同步和加锁。

继续阅读“通过同步和加锁解决多线程的线程安全问题”

如何解决神经网络训练时loss不下降的问题

当我们训练一个神经网络模型的时候,我们经常会遇到这样的一个头疼的问题,那就是,神经网络模型的loss值不下降,以致我们无法训练,或者无法得到一个效果较好的模型。导致训练时loss不下降的原因有很多,而且,更普遍的来说,loss不下降一般分为三种,即:训练集上loss不下降,验证集上loss不下降,和测试集上loss不下降。这里,首先默认各位都能理解过拟合和欠拟合的概念,如果有不清楚的可以参考下面的一些文章。

继续阅读“如何解决神经网络训练时loss不下降的问题”

AI柠檬博客走过第二个年头

伴随着新的一年来临,爆竹声中一岁除,我们又长了一岁,AI柠檬博客也伴随着大家和博主我,走过了第二个年头。新年新气象,我也成为即将毕业的学生了。从跟大家一样,刚刚入学,怀着梦想的一个懵懂无知的萌新,变为一个对知识有所涉猎,对技术有所专长,对社会有所见解的人。当回顾过去这一年,看一看自己这一年来的进步情况,所学的知识,所做的事情,我们就会对自己在这段时间内的表现,能否令自己满意,是否达到了目标,有着一个明确的判断。

继续阅读“AI柠檬博客走过第二个年头”

ASVRG:一个更好的加速近端SVRG

ASVRG是由西安电子科技大学一科研团队于近期新提出来的一个加速的近端随机变量减小的梯度方法,通过设计一个简单高效的动量加速技巧,只添加一个额外的变量和一个动量参数,使得其拥有了一个更简单且所需的训练迭代数更少的加速效果。并且,ASVRG被证明可以实现强凸和非强凸目标的最著名的oracle复杂性,此外,还可以扩展到小批量和非平滑设置。作者在论文中,还凭经验验证了理论结果,并表明ASVRG的性能与最先进的随机方法相当,有时甚至更好。

继续阅读“ASVRG:一个更好的加速近端SVRG”

分布式机器学习:新书推荐和介绍

博主前一段时间在其他人的推荐下,入手了近期新出的一本名为《分布式机器学习:算法、理论与实践》的书。这是一本全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并讨论分布式机器学习领域未来的发展,不可多得的好书。这本书是基于微软亚洲研究院机器学习研究团队多年的研究成果和实践经验编写成的,可为研究生从事分布式机器学习方向研究提供参考文献,也可为人工智能从业者提供算法选择和系统设计的指导。

继续阅读“分布式机器学习:新书推荐和介绍”

几个最新免费开源的中文语音数据集

工欲善其事必先利其器,做机器学习,我们需要有利器,才能完成工作,数据就是我们最重要的利器之一。做中文语音识别,我们需要有对应的中文语音数据集,以帮助我们完成和不断优化改进项目。我们可能很难拿到成千上万小时的语音数据集,但是这里有一些免费开源的语音数据集,大家一定不要错过。文末附数据集下载地址。

继续阅读“几个最新免费开源的中文语音数据集”