机器学习:朴素贝叶斯分类器

朴素贝叶斯分类器(naïve Bayes classifier)是机器学习中的一种假设特征之间强独立的基于贝叶斯定理的简单概率分类器。朴素贝叶斯自20世纪50年代起就已经广泛研究,具有快速易实现的优点,这种机器学习方法在有适当的预处理时,可以与这个领域包括支持向量机在内的更先进的方法相竞争[1]。本文将主要介绍朴素贝叶斯分类器算法的原理,并以一个小实例解释其在实际中是如何应用的。

继续阅读“机器学习:朴素贝叶斯分类器”

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

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

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

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

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

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

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

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

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

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

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

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