亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種K近鄰算法的加速裝置及方法與流程

文檔序號(hào):12748493閱讀:811來(lái)源:國(guó)知局
一種K近鄰算法的加速裝置及方法與流程

本發(fā)明涉及信息檢索、數(shù)據(jù)挖掘和計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域,特別涉及一種K近鄰算法的加速裝置及方法。



背景技術(shù):

KNN算法(K-Nearest Neighbor,K近鄰算法)是一種非參數(shù)分類算法,在未知分布的分類上具有高分類精度,在非正態(tài)分布分類上具有低錯(cuò)誤率,因此被廣泛應(yīng)用于機(jī)器學(xué)習(xí)、隨機(jī)規(guī)劃、模式識(shí)別等領(lǐng)域,由于KNN分類時(shí)需要計(jì)算待分類的特征向量與已訓(xùn)練的具有類別標(biāo)簽的樣本集中的每個(gè)樣本的距離,導(dǎo)致當(dāng)樣本維度和樣本數(shù)量較大時(shí)計(jì)算復(fù)雜度高,采用軟件方式計(jì)算時(shí)速度慢、實(shí)時(shí)性差,影響了其在實(shí)際系統(tǒng)中的應(yīng)用,鑒于此,許多研究關(guān)注如何提高KNN算法的計(jì)算速度,例如,通過(guò)快速KNN計(jì)算方法來(lái)降低計(jì)算復(fù)雜度、提升搜索速度,包括通過(guò)部分距離搜索提前中止比較,以及通過(guò)樣本變換提前判斷是否屬于待分類樣本的K-近鄰等方法,這方面的具體工作有采用樹狀結(jié)構(gòu)的KNN算法、基于小波變換的快速KNN算法、基于金字塔模型的KNN算法等;此外,還有通過(guò)減少訓(xùn)練樣本集的數(shù)量從而減少每次分類比較的次數(shù)來(lái)提高計(jì)算速度的方法。

除了上述針對(duì)算法本身的改進(jìn)之外,許多工作采用專用硬件的方式進(jìn)一步加速KNN算法的處理,采用硬件加速的優(yōu)點(diǎn)是專用硬件結(jié)構(gòu)往往在性能、功耗等方面比通用CPU更為優(yōu)化,然而對(duì)于不同的應(yīng)用,包括訓(xùn)練樣本的數(shù)量、樣本維度、K變量等參數(shù)通常需要根據(jù)實(shí)際需求進(jìn)行調(diào)整,此外,計(jì)算時(shí)間也需要能滿足不同應(yīng)用的特定需求,但目前基于硬件加速的KNN算法研究方面的工作更多關(guān)注的是如何通過(guò)精簡(jiǎn)算法來(lái)提高速度,其通常實(shí)現(xiàn)的是固定維數(shù)下的特定KNN算法,限制了對(duì)不同應(yīng)用的適應(yīng)能力。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)上述問題,本發(fā)明設(shè)計(jì)并實(shí)現(xiàn)了一種K近鄰算法的加速裝置及方法。

本發(fā)明提出一種K近鄰算法的加速裝置,包括:

控制模塊,用于控制所述加速裝置中各模塊;

地址計(jì)算模塊,用于獲取訓(xùn)練樣本的地址;

歐氏距離計(jì)算模塊,用于進(jìn)行K近鄰搜索時(shí),計(jì)算距離;

結(jié)果模塊,用于儲(chǔ)存所述距離,并將所述距離進(jìn)行傳送;

排序模塊,用于將所述距離進(jìn)行K近鄰排序。

其中,所述結(jié)果模塊將所述距離傳送給所述排序模塊,并向所述地址計(jì)算模塊發(fā)送計(jì)算下一個(gè)地址的信號(hào),所述地址計(jì)算模塊接收所述信號(hào)并計(jì)算下一個(gè)訓(xùn)練樣本的地址,所述控制模塊將所述結(jié)果模塊中的內(nèi)容清空。

所述控制模塊包括寄存器組,并包括并行度、樣本維度、最近鄰K的值、系統(tǒng)重置信息。

所述歐氏距離計(jì)算模塊由多個(gè)維度計(jì)算模塊構(gòu)成,且所述歐氏距離計(jì)算模塊根據(jù)并行度的值增加相應(yīng)數(shù)量的所述維度計(jì)算模塊。

所述地址計(jì)算模塊根據(jù)并行度、樣本維度,獲取訓(xùn)練樣本的地址。

所述排序模塊在進(jìn)行K近鄰排序時(shí),當(dāng)序列大于K值時(shí)直接丟棄升序排在K+1位的值與其標(biāo)簽。

本發(fā)明還提出一種利用所述K近鄰算法的加速裝置的K近鄰算法加速方法,其特征在于,包括:

所述結(jié)果模塊將所述距離傳送給所述排序模塊,并向所述地址計(jì)算模塊發(fā)送計(jì)算下一個(gè)地址的信號(hào),所述地址計(jì)算模塊接收所述信號(hào)并計(jì)算下一個(gè)訓(xùn)練樣本的地址,所述控制模塊將所述結(jié)果模塊中的內(nèi)容清空。

設(shè)置寄存器組,所述寄存器組包括并行度、樣本維度、最近鄰K的值、系統(tǒng)重置信息。

根據(jù)并行度的值增加相應(yīng)數(shù)量的所述維度計(jì)算模塊。

根據(jù)并行度、樣本維度,獲取訓(xùn)練樣本的地址。

在進(jìn)行K近鄰排序時(shí),當(dāng)序列大于K值時(shí)直接丟棄升序排在K+1位的值與其標(biāo)簽。

由以上方案可知,本發(fā)明的優(yōu)點(diǎn)在于:

本發(fā)明具備可重構(gòu)能力的硬件結(jié)構(gòu),通過(guò)增減組件即可適應(yīng)不同維度樣本的KNN算法,對(duì)同樣維度樣本的計(jì)算則可以通過(guò)調(diào)整并行度滿足對(duì)邏輯資源和處理時(shí)間的不同需求,目的是克服現(xiàn)有軟件KNN計(jì)算速度慢、硬件實(shí)現(xiàn)的KNN靈活性不夠的缺陷。

附圖說(shuō)明

圖1為本發(fā)明的總體結(jié)構(gòu)圖;

圖2為CONTROL模塊圖;

圖3為SORT模塊圖。

具體實(shí)施方式

本發(fā)明的目的在于提出一種K近鄰算法的加速裝置及方法。本發(fā)明的總體思路是:設(shè)計(jì)提出一種可快速運(yùn)算KNN算法的具備可重構(gòu)能力的加速器結(jié)構(gòu),通過(guò)增加多個(gè)維度的計(jì)算模塊,在KNN算法的距離計(jì)算過(guò)程中根據(jù)規(guī)模進(jìn)行并行擴(kuò)展,實(shí)現(xiàn)了KNN算法的加速。

本發(fā)明的總體結(jié)構(gòu)圖如圖1所示,并依次包含如下步驟:

步驟1)信號(hào)控制模塊實(shí)現(xiàn)

步驟11)CONTROL模塊(控制模塊)實(shí)現(xiàn)

CONTROL模塊是整個(gè)系統(tǒng)的控制模塊,如圖2所示,它有一個(gè)寄存器組,包含并行度、樣本維度、最近鄰k的值、系統(tǒng)重置等系統(tǒng)控制信息,每一個(gè)待分類樣本搜索結(jié)束時(shí)控制系統(tǒng)將重置。當(dāng)已取當(dāng)前訓(xùn)練樣本距離值完成全部距離值累加并由RESULT模塊傳遞給SORT模塊時(shí),SORT信號(hào)控制圖1中SORT模塊進(jìn)行K近鄰排序。

步驟12)ADDR GEN模塊(地址計(jì)算模塊)實(shí)現(xiàn)

ADDR GEN模塊是待取已分類的訓(xùn)練樣本地址的控制模塊,根據(jù)并行度、樣本維度等信息計(jì)算地址。當(dāng)?shù)玫疆?dāng)前的距離值后由RESULT向ADDR GEN模塊發(fā)出NEXT信號(hào),開始下一個(gè)訓(xùn)練樣本的地址計(jì)算。

步驟2)距離計(jì)算硬件實(shí)現(xiàn)

通過(guò)可重構(gòu)的硬件結(jié)構(gòu)來(lái)滿足不同并行度的歐氏距離計(jì)算需求,歐氏距離計(jì)算模塊由多個(gè)維度計(jì)算模塊構(gòu)成。例如,當(dāng)并行度為i時(shí),X1、Y1到Xi、Yi組模塊會(huì)同時(shí)進(jìn)行計(jì)算。需要擴(kuò)展并行度時(shí)只需增加相應(yīng)的維度計(jì)算模塊,增加樣本輸出位寬,讓并行計(jì)算的數(shù)據(jù)同時(shí)從存儲(chǔ)訓(xùn)練樣本的RAM輸出;同時(shí)更新圖1中CONTROL模塊的并行度值,ADDR GEN模塊會(huì)計(jì)算出地址增量值、適應(yīng)位寬改變時(shí)RAM地址的定位。每個(gè)待分類樣本進(jìn)行K鄰近搜索時(shí),訓(xùn)練樣本數(shù)據(jù)將不斷地被輸入歐氏距離計(jì)算模塊與待分類樣本的部分進(jìn)行距離計(jì)算。當(dāng)與每個(gè)已訓(xùn)練樣本的距離計(jì)算結(jié)束時(shí),距離累加器會(huì)被清空,為下一個(gè)訓(xùn)練樣本距離的累加做好準(zhǔn)備。CLEAR信號(hào)、SORT信號(hào)都在CONTROL模塊中產(chǎn)生,NEXT地址計(jì)算在ADDR GEN模塊中完成。通過(guò)該方法可以實(shí)現(xiàn)計(jì)算并行度的伸縮,以適應(yīng)不同的應(yīng)用需求。

步驟3)RESULT模塊(結(jié)果模塊)實(shí)現(xiàn)

距離計(jì)算結(jié)果輸入到RESULT模塊的寄存器,當(dāng)結(jié)果有效判定為真時(shí)將其傳遞給SORT模塊,并同時(shí)產(chǎn)生NEXT控制信號(hào)給ADDR GEN模塊。ADD GEN模塊計(jì)算下一個(gè)待取樣本的RAM地址,并由CONTROL模塊產(chǎn)生CLEAR信號(hào)將RESULT模塊的內(nèi)容清空。

步驟4)SORT模塊(排序模塊)實(shí)現(xiàn)

SORT模塊接收RESULT模塊產(chǎn)生的值及其對(duì)應(yīng)的樣本標(biāo)簽,收到CONTROL的SORT信號(hào)后對(duì)SORT模塊中緩存的所有值進(jìn)行排序,當(dāng)序列大于K值時(shí)直接丟棄升序排在K+1位的值和其標(biāo)簽。當(dāng)所有的訓(xùn)練樣本計(jì)算完畢后,SORT模塊輸出最終的分類結(jié)果。

本發(fā)明還提出一種利用所述K近鄰算法的加速裝置的K近鄰算法加速方法,包括:

所述結(jié)果模塊將所述距離傳送給所述排序模塊,并向所述地址計(jì)算模塊發(fā)送計(jì)算下一個(gè)地址的信號(hào),所述地址計(jì)算模塊接收所述信號(hào)并計(jì)算下一個(gè)訓(xùn)練樣本的地址,所述控制模塊將所述結(jié)果模塊中的內(nèi)容清空。

設(shè)置寄存器組,所述寄存器組包括并行度、樣本維度、最近鄰K的值、系統(tǒng)重置信息。

根據(jù)并行度的值增加相應(yīng)數(shù)量的所述維度計(jì)算模塊。

根據(jù)并行度、樣本維度,獲取訓(xùn)練樣本的地址。

在進(jìn)行K近鄰排序時(shí),當(dāng)序列大于K值時(shí)直接丟棄升序排在K+1位的值與其標(biāo)簽。

以下為本發(fā)明的實(shí)施例,本方法的總體流程框圖如圖3所示。

現(xiàn)在采用一個(gè)樣本維度為6,樣本空間為20的KNN計(jì)算實(shí)例(k=8)作為本發(fā)明的一個(gè)實(shí)施例,假設(shè)本發(fā)明對(duì)6個(gè)維度并行計(jì)算。

步驟1)信號(hào)控制模塊

步驟11)CONTROL模塊(控制模塊)

CONTROL模塊中的寄存器組分別記錄并行度6,樣本維度6,樣本空間20,最近鄰k值8。

步驟12)ADDR GEN模塊(地址計(jì)算模塊)

記錄樣本空間的首地址。

步驟2)距離計(jì)算硬件

由6個(gè)維度計(jì)算模塊構(gòu)成歐氏距離計(jì)算模塊,X1、Y1到X6、Y6六組模塊同時(shí)進(jìn)行計(jì)算,并將計(jì)算結(jié)果匯總到累加器進(jìn)行累加,累加的結(jié)果傳遞給RESULT模塊的寄存器。

步驟3)RESULT模塊(結(jié)果模塊)

RESULT模塊對(duì)計(jì)算結(jié)果進(jìn)行判定,當(dāng)結(jié)果不小于零即為有效的前提下,將結(jié)果傳遞給SORT模塊,同時(shí)產(chǎn)生NEXT信號(hào)給ADD GEN模塊。ADD GEN模塊接收到NEXT信號(hào)后計(jì)算下一個(gè)訓(xùn)練樣本的地址。此時(shí)CONTROL模塊會(huì)發(fā)出CLEAR信號(hào)將RESULT模塊的內(nèi)容清空,同時(shí)給SORT模塊發(fā)出SORT控制信號(hào)。

步驟4)SORT模塊(排序模塊)

SORT模塊對(duì)接收到的距離計(jì)算結(jié)果進(jìn)行排序,同時(shí)記錄當(dāng)前的序列數(shù)為1,并給出下一個(gè)樣本計(jì)算的激勵(lì)信號(hào)。轉(zhuǎn)步驟12)。直到樣本空間計(jì)算完畢,輸出待測(cè)實(shí)例的所屬類別。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1