一种基于FPGA的K均值算法的实现方法技术

技术编号:29873413 阅读:17 留言:0更新日期:2021-08-31 23:48
本发明专利技术属于数字电路设计技术领域,具体涉及一种基于FPGA的K均值算法的实现方法,包括顶层模块(1),聚类模块(2),更新模块(3),存储模块(4)。这些模块都由RTL级代码实现。本发明专利技术主要针对海量高维度数据存储与处理速度慢的问题,通过利用FPGA逻辑资源丰富,开发周期短,可并行计算的优势提高数据访问与处理速度。

【技术实现步骤摘要】
一种基于FPGA的K均值算法的实现方法
本专利技术属于数字电路设计
,具体涉及一种基于FPGA的K均值算法的实现方法。
技术介绍
随着互联网和电子商务的飞速发展,获取信息的需求和手段越来越多,对于获取数据的速度要求越来越高,就会导致各行各业获取,沉淀和处理的数据呈指数增长。海量高维度的数据的存储,使用等明显降低了数据处理的速度,成为研究人员密切关注和希望有所突破的问题。这也是数据挖掘领域的核心内容。一种无监督的机器学习算法聚类算法被广泛应用于数据挖掘,模式识别,图像处理等领域,在各领域发挥其重要作用。聚类算法可以在商业领域中进行市场分析、调研信息,比如从数据库中消费者记录分析不同消费者的习惯、需求等;可以在生物医学领域中加速研究,对动植物分类,对基因的相似关联性分析等。聚类算法大致可以分为五大类,但不局限于这五类,分别为基于划分的聚类算法,比如我们最熟识的K均值算法就是基于划分思想的聚类算法中的一种。基于层次的聚类算法、基于密度的聚类算法、基于网格的聚类算法和基于模型的聚类算法。不同的聚类算法会根据自身不同的特点局限性适用于不同分布的多种多样的数据集。比如K均值算法,该算法原理简单,运行速度快时间短,适用于连续型球状分布的数据集,但在处理分布不规则的数据集时便很难得到较好的聚类效果。而其他类别中的某个或者某些算法就相对更适用于这种分布不规则的数据集,能够达到更好的聚类效果。目前,云计算平台在大数据分析领域发展快速且成熟。云计算平台由多台CPU构成,由于CPU之间信息通信受带宽限制,此时硬件加速平台应运而生。而且就目前发展趋势而言,对大数据处理能力,资源效率等问题上,借助硬件设备成为一种至关重要的办法。现场可编程门阵列(FieldProgrammableGateArray)这种逻辑资源丰富、配置灵活、开发周期短、可并行计算的半定制数字电路设计载体更适合作为用来加速的硬件设备。
技术实现思路
本专利技术的目的是提供一种基于FPGA的K均值算法的实现方法,利用K均值算法并行特点与FPGA的并行完美融合,使得该算法对于海量高维数据在FPGA平台上从速度,硬件资源占用等方面得到了优化。为达到以上目的具体包括:顶层模块(1)、聚类模块(2)、更新模块(3)、存储模块(4)。这些模块都由RTL级代码实现。顶层模块(1)由有限状态机实现对其他模块的控制以及数据通路,根据控制部件的信息跳转顺序的执行各个模块。首先,在收到上位机传入的开始命令后,状态机进入开始状态,将数据从寄存器中读出送入聚类模块(2),开始数据聚类过程。聚类结束后反馈给顶层模块(1)一个完成信号,状态机继而跳转。最终完成数据的聚类。为了实现循环,利用多个计数器控制。聚类模块(2)包括控制器(201)、距离计算模块(202)、寻找最小距离模块(203)、确定类别模块(204)、串入并出模块(205)。其中涉及浮点数加法器、浮点数乘法器、比较器等。控制器(201)用有限状态机实现,与顶层模块(1)类似,控制聚类的过程。距离计算模块(202)接收到控制器(201)的开始信号后,读取数据计算输入数据与聚类中心的曼哈顿距离,即读取一个输入计算该输入与K个聚类中心的距离,在寻找最小距离模块(203)中找到K个距离中的最小值。通过确定类别模块(204)将该输入分配到相应的存储器RAM中也就是聚类到了相应的类别中,完成一个输入数据的聚类。循环N次,完成N个数据的聚类。更新模块(3)包括控制器(301)、数据累加模块(302)、除法模块(303)、定点数转浮点数模块(304)。数据累加模块(302)对聚在某一类的输入数据累加,将累加结果送到除法模块(303),更新该类的聚类中心。存储模块(4)除存储所有输入数据的ROM外,还利用RAM动态存储聚类中心和K类输入数据。每次聚类时读出聚类中心进行聚类,聚类完成时将相应类别的输入数据写入。更新模块时从K类输入数据分别读出数据更新中心,更新后的中心写入存储聚类中心的RAM里。附图说明图1为本专利技术的系统框图;图2为顶层模块状态转移图;图3为聚类模块实施图;图4为聚类模块控制器的状态转移图;图5为更新模块实施图;图6为更新模块控制器的状态转移图;图7为聚类模块的仿真结果;图8为更新模块的仿真结果。具体实施方式为了使本专利技术的目的,技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。参照图1,是一种基于FPGA的K均值算法的实现方法的系统框图,包括顶层模块(1)、聚类模块(2)、更新模块(3)和存储模块(4)以及模块间的数据联系,其中:顶层模块(1)用于控制调度整个聚类过程的模块,由有限状态机实现何时开始聚类的哪个过程,参照图2。聚类开始信号有效时,开始某一个数据的聚类,完成N个数据的聚类后反馈给顶层模块(1)聚类结束信号,从而更新开始信号有效,执行更新模块(3)。更新模块(3)完成后同样反馈给顶层模块(1)一个结束信号。顶层模块(1)接收到该结束信号时完成了一次聚类过程,顶层模块(1)继而继续进行下一次聚类的调度,直到满足迭代停止条件。存储模块(4)的作用正如图1所示,存储输入数据,结果,以及中间过程的数据。皆通过IP核调用ROM和RAM。在聚类模块(2)中确定类别模块(204)和串入并出模块(205)中都有RAM的使用,该部分RAM是verilog编码实现,规模都是宽度32位深度为K,用来存放距离计算模块(202)的结果,也就是一个输入与K个聚类中心的距离。通过不断写入读出RAM中的数据完成后面的操作。参照图3是聚类模块(2)的实施图,距离计算模块(202)选择曼哈顿距离,输入数据与聚类中心每个维度相减再自乘,将各维度经浮点数减法器、浮点数乘法器输出的结果累加即是输入数据与某个聚类中心的距离。计算完该点到K个中心的距离后写入存储模块(4)中提到的两个自编码的RAM中,由于寻找最小距离模块(203)是同时输入所有待比较的距离,因此在两模块之间需要一个串转并的过程,完成数据传输。确定类别模块(204)是从距离计算模块(202)后的RAM中依次读出数据和最小距离比较,读出与此相等的数据的地址,即为输入应被聚类到哪一个聚类中心点附近。聚类模块(2)中的各小模块间的连接与调度由图4所示的状态机控制。该状态及有以下6个状态,每个状态含义如下:INIT:初始状态,检测开始信号的上升沿,同时输出端口输出0,以及各个标志位和计数器清零;RUN1:运行距离计算,将K个距离写入与确定类别模块有关的RAM中;WRITE:写距离到另一个RAM中,距离计算未停止;RUN2:运行寻找最小距离,相应RAM的读信号拉高;COMP:读距离,比较,确定类别标号;FINISH:结束聚类,输出结束标志位拉高。更新模块(3)参照图5为该模块中数据的处理过程。从存储聚过类的数据点的RAM中读出数据并累加,在累加过程中计数据的个数,计数器是定点数的计数而在本文档来自技高网
...

【技术保护点】
1.一种基于FPGA的K均值算法的实现方法,主要结构包括顶层模块(1)、聚类模块(2)、更新模块(3)、存储模块(4),顶层模块(1)由有限状态机实现对其他模块的控制以及数据通路,根据控制部件的信息跳转顺序的执行各个模块,首先,在收到上位机传入的开始命令后,状态机进入开始状态,将数据从寄存器中读出送入聚类模块(2),开始数据聚类过程,聚类结束后反馈给顶层模块(1)一个完成信号,状态机继而跳转,最终完成数据的聚类,为了实现循环,利用多个计数器控制,存储模块(4)除存储所有输入数据的ROM外,还利用RAM动态存储聚类中心和K类输入数据,每次聚类时读出聚类中心进行聚类,聚类完成时将每类输入写入,更新模块时从K类输入数据分别读出更新中心,更新后的中心写入存储聚类中心的RAM里,其中:/n顶层模块(1):输入端输出端都与聚类模块(2)中的控制器(201),更新模块(3)中的控制器(301)相连;/n存储模块(4):输入端输出端都与聚类模块(2)、更新模块(3)的输入输出端相连。/n

【技术特征摘要】
1.一种基于FPGA的K均值算法的实现方法,主要结构包括顶层模块(1)、聚类模块(2)、更新模块(3)、存储模块(4),顶层模块(1)由有限状态机实现对其他模块的控制以及数据通路,根据控制部件的信息跳转顺序的执行各个模块,首先,在收到上位机传入的开始命令后,状态机进入开始状态,将数据从寄存器中读出送入聚类模块(2),开始数据聚类过程,聚类结束后反馈给顶层模块(1)一个完成信号,状态机继而跳转,最终完成数据的聚类,为了实现循环,利用多个计数器控制,存储模块(4)除存储所有输入数据的ROM外,还利用RAM动态存储聚类中心和K类输入数据,每次聚类时读出聚类中心进行聚类,聚类完成时将每类输入写入,更新模块时从K类输入数据分别读出更新中心,更新后的中心写入存储聚类中心的RAM里,其中:
顶层模块(1):输入端输出端都与聚类模块(2)中的控制器(201),更新模块(3)中的控制器(301)相连;
存储模块(4):输入端输出端都与聚类模块(2)、更新模块(3)的输入输出端相连。


2.根据权利要求1所述的一种基于FPGA的K均值算法的实现方法,其特征在于,所述聚类模块(2)包括控制器(201)、距离计算模块(202)、寻找最小距离模块(203)、确定类别模块(204)、串入并出模块(205),控制器(201)用有限状态机实现,与顶层模块(1)类似,控制聚类的过程,距离计算模块(202)接收到控制器(201)的开始信号后,读取数据计算输入数据与聚类中心的曼哈顿距离,即读取一个输入计算该输入与K个聚类中心的距离,在寻找最小距离模块(203)中找到K个距离中的最小值,通过确定类别模块(204)将该输入分配到相应的存储器RAM中也就是聚类到了相应的...

【专利技术属性】
技术研发人员:石晴文冯佳玮
申请(专利权)人:哈尔滨理工大学
类型:发明
国别省市:黑龙江;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1