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

一種用于執(zhí)行Hessian-Free訓(xùn)練算法的裝置和方法與流程

文檔序號:12906531閱讀:434來源:國知局
一種用于執(zhí)行Hessian-Free訓(xùn)練算法的裝置和方法與流程

本發(fā)明涉及神經(jīng)網(wǎng)絡(luò)運算技術(shù)領(lǐng)域,更具體地涉及一種用于執(zhí)行hessian-free訓(xùn)練算法的裝置和方法。



背景技術(shù):

梯度下降法在函數(shù)逼近、優(yōu)化計算、模式識別和圖像處理等領(lǐng)域被廣泛應(yīng)用。目前主流的神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法是梯度下降法(結(jié)合bp算法),但是這種方法忽略了誤差函數(shù)的曲率信息,不僅容易出現(xiàn)參數(shù)變化過度平緩,從而無法收斂到局部最優(yōu)點的情況,而且無法很好的處理“病態(tài)曲率”的誤差函數(shù)(比如rosenbrock函數(shù))。hessian-free訓(xùn)練算法很好的解決了這個問題,并且通過一些細節(jié)改進,使之沒有出現(xiàn)運算量關(guān)于參數(shù)數(shù)量平方增長(和梯度下降法一樣是線性增長)的情況。

目前,一種執(zhí)行hessian-free訓(xùn)練算法的已知方法是使用通用處理器。該方法通過使用通用寄存器堆和通用功能部件執(zhí)行通用指令來支持上述算法。該方法的缺點之一是單個通用處理器的運算性能較低。而多個通用處理器并行執(zhí)行時,通用處理器之間相互通信又成為了性能瓶頸。另外,通用處理器需要把hessian-free訓(xùn)練算法對應(yīng)的相關(guān)運算譯碼成一長列運算及訪存指令序列,處理器前端譯碼帶來了較大的功耗開銷。

另一種執(zhí)行hessian-free訓(xùn)練算法的已知方法是使用圖形處理器(gpu)。該方法通過使用通用寄存器堆和通用流處理單元執(zhí)行通用simd指令來支持上述算法。由于gpu是專門用來執(zhí)行圖形圖像運算以及科學(xué)計算的設(shè)備,沒有對hessian-free訓(xùn)練算法相關(guān)運算的專門支持,仍然需要大量的前端譯碼工作才能執(zhí)行hessian-free訓(xùn)練算法中相關(guān)的運算,帶來了大量的額外開銷。另外,gpu只有較小的片上緩存,運算中所需數(shù)據(jù)(如高斯-牛頓矩陣等)需要反復(fù)從片外搬運,片外帶寬成為了主要性能瓶頸,同時帶來了巨大的功耗開銷。



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

有鑒于此,本發(fā)明的目的在于提供一種用于執(zhí)行hessian-free訓(xùn)練算法的裝置和方法,以期堅決上述技術(shù)問題中的至少之一。

為了實現(xiàn)上述目的,作為本發(fā)明的一個方面,本發(fā)明提供了一種用于執(zhí)行hessian-free訓(xùn)練算法的裝置,包括:

控制器單元,用于將讀取的指令譯碼為控制相應(yīng)模塊的微指令,并將其發(fā)送給相應(yīng)模塊;

數(shù)據(jù)緩存單元,用于存儲運算過程中的中間變量,并對所述中間變量執(zhí)行初始化及更新操作;

數(shù)據(jù)處理模塊,用于在所述控制器單元的控制下執(zhí)行運算操作,并將中間變量存儲于所述數(shù)據(jù)緩存單元中。

其中,所述數(shù)據(jù)處理模塊包括運算控制子模塊、梯度運算子模塊、阻尼項運算子模塊、高斯-牛頓矩陣運算子模塊、共軛梯度法運算子模塊及基本運算子模塊;其中,所述基本運算子模塊進行的是矩陣、向量之間的加、乘基礎(chǔ)運算;

作為優(yōu)選,所述梯度運算子模塊、阻尼項運算子模塊、高斯-牛頓矩陣運算子模塊、共軛梯度法運算子模塊均能夠調(diào)用所述基本運算子模塊,且根據(jù)情況所述梯度運算子模塊、阻尼項運算子模塊、高斯-牛頓矩陣運算子模塊、共軛梯度法運算子模塊之間允許互相調(diào)用。

其中,所述數(shù)據(jù)緩存單元在裝置初始化時初始化f(θ)的二階估計在第n次待更新參數(shù)向量θn的更新開始前,將讀出到數(shù)據(jù)處理模塊中,并在所述數(shù)據(jù)處理模塊中得到更新向量后將再次寫入;其中,θ為待更新參數(shù)向量,θn為第n次待更新參數(shù)向量,f(θ)為誤差函數(shù),即衡量結(jié)果的實際值與預(yù)測值偏離的函數(shù);δn是更新向量,且θn+1=θn+δn。

其中,所述數(shù)據(jù)緩存單元在初始化的步驟中,初始化其中的梯度高斯-牛頓矩陣gf、阻尼系數(shù)λ和阻尼函數(shù)其中,所述梯度指f在θn處的梯度值,gf是f在θn處的高斯-牛頓矩陣;阻尼函數(shù)是根據(jù)訓(xùn)練模型預(yù)先確定好的函數(shù)在θn處的值;阻尼系數(shù)λ通過lm式啟發(fā)式方法求得;

所述數(shù)據(jù)處理模塊從所述數(shù)據(jù)緩存單元中讀取從外部指定空間中讀取待更新參數(shù)向量θn;在模塊內(nèi)得到更新向量δn,將θn更新為θn+1,對應(yīng)的更新為然后將寫入至所述數(shù)據(jù)緩存單元,將θn+1寫入到外部指定空間中;其中,θn+1為第n+1次待更新參數(shù)向量,為f(θ+1)的二階估計。

作為本發(fā)明的另一個方面,本發(fā)明還提供了一種執(zhí)行hessian-free訓(xùn)練算法的方法,包括以下步驟:

步驟(1),通過指令,完成數(shù)據(jù)緩存單元的初始化操作,即初始化f(θ)的二階估計其中,θ為待更新參數(shù)向量,θn為第n次待更新參數(shù)向量,f(θ)為誤差函數(shù),即衡量結(jié)果的實際值與預(yù)測值偏離的函數(shù);δn是更新向量,且θn+1=θn+δn;

步驟(2),通過io指令,完成直接內(nèi)存訪問單元從外部空間讀取待更新參數(shù)向量的操作;

步驟(3),數(shù)據(jù)處理模塊根據(jù)相應(yīng)指令,在θn處對誤差函數(shù)f(θ)進行二階泰勒展開,并添加阻尼項得到f(θ)在θn附近的估計

其中,gf是f在θn處的高斯-牛頓矩陣;阻尼系數(shù)λ通過lm式啟發(fā)式方法求得;阻尼函數(shù)是根據(jù)訓(xùn)練模型預(yù)先確定好的函數(shù)在θn處的值;

步驟(4),數(shù)據(jù)處理模塊根據(jù)相應(yīng)的指令,進行有預(yù)條件的共軛梯度法求δn使得達到最小值,并把θn更新為θn+1,具體更新操作為:

θn+1=θn+δn;

步驟(5),數(shù)據(jù)處理單元判斷更新后的參數(shù)向量是否收斂,若收斂,運算結(jié)束,否則,轉(zhuǎn)到步驟(2)處繼續(xù)執(zhí)行。

其中,步驟(1)中所述完成數(shù)據(jù)緩存單元的初始化操作的步驟包括:對梯度高斯-牛頓矩陣gf、阻尼系數(shù)λ和阻尼函數(shù)進行置零操作。

其中,步驟(3)中當進行rnn訓(xùn)練時,

阻尼函數(shù)

其中s和f均是距離函數(shù),gs是s在θn處的高斯-牛頓矩陣,μ是一個預(yù)先確定好的正數(shù)。

其中,步驟(4)所述進行有預(yù)條件的共軛梯度法求δn使得達到最小值的步驟中,在進行有預(yù)條件的共軛梯度法過程中,只用“mini-batch”而不是所有樣本,且其中涉及的高斯-牛頓矩陣乘向量的運算都是通過做隱式近似計算。

作為本發(fā)明的再一個方面,本發(fā)明還提供了一種執(zhí)行hessian-free訓(xùn)練算法的方法,其特征在于,包括以下步驟:

步驟s1,在指令緩存單元的首地址處預(yù)先存入一條io指令。

步驟s2,運算開始,控制器單元從指令緩存單元的首地址讀取該條io指令,根據(jù)譯出的微指令,直接內(nèi)存訪問單元從外部地址空間讀取所有與hessian-free計算有關(guān)的所有指令,并將其緩存入指令緩存單元中;

步驟s3,控制器單元從指令緩存單元讀入一條io指令,根據(jù)譯出的微指令,直接內(nèi)存訪問單元從外部空間讀取初始待更新參數(shù)向量θ0到數(shù)據(jù)處理模塊中;

步驟s4,控制器單元從指令緩存單元讀入賦值指令,根據(jù)譯出的微指令,數(shù)據(jù)緩存單元中的初始化,數(shù)據(jù)處理單元中的迭代次數(shù)n被設(shè)置為0;其中,θ為待更新參數(shù)向量,θn為第n次待更新參數(shù)向量,f(θ)為誤差函數(shù),即衡量結(jié)果的實際值與預(yù)測值偏離的函數(shù);δn是更新向量,且θn+1=θn+δn;為f(θ)的二階估計;

步驟s5,控制器單元從指令緩存單元讀入一條io指令,根據(jù)譯出的微指令,直接內(nèi)存訪問單元從外部空間讀取待更新參數(shù)向量θn傳入到數(shù)據(jù)處理模塊中;

步驟s6,控制器單元從指令緩存單元讀入一條對誤差函數(shù)在當前參數(shù)向量值附近進行二階估計的指令,根據(jù)譯出的微指令,進行求f(θ)在θn附近的二階估計的操作;該操作中,指令被送至運算控制子模塊,運算控制子模塊發(fā)送相應(yīng)指令進行以下操作:利用梯度運算子模塊計算利用高斯-牛頓運算子模塊和基本運算子模塊中的矩陣乘法運算,得到f在θn處的高斯-牛頓矩陣gf;利用阻尼項運算子模塊和基本運算子模塊執(zhí)行l(wèi)m啟發(fā)式方法得到阻尼系數(shù)λ,進而得到阻尼項最后,通過得到的表達式存入數(shù)據(jù)緩存單元;其中,阻尼函數(shù)是根據(jù)訓(xùn)練模型預(yù)先確定好的函數(shù)在θn處的值;

步驟s7,控制器單元從指令緩存單元讀取一條數(shù)據(jù)傳輸指令,根據(jù)譯出的微指令,將從數(shù)據(jù)緩存單元傳送到數(shù)據(jù)處理單元中;

步驟s8,控制器單元從指令緩存單元讀取一條參數(shù)更新運算指令,根據(jù)譯出的微指令,進行用有預(yù)條件的共軛梯度法求δn使得達到最小值,并把θn更新為θn+1的操作;直接內(nèi)存訪問單元從外部空間讀取待更新參數(shù)向量θn傳入到數(shù)據(jù)處理模塊中;運算控制子模塊控制相關(guān)運算模塊進行如下操作:利用共軛梯度運算子模塊和基本運算子模塊得到更新向量δn;最后,利用基本運算子模塊中的向量加法將θn更新為θn+1;

步驟s9,控制器單元從指令緩存單元讀取一條io指令,根據(jù)譯出的微指令,更新后的參數(shù)向量θn+1從數(shù)據(jù)處理單元通過直接內(nèi)存訪問單元傳送至外部指定空間;

步驟s10,控制器單元從指令緩存單元讀取一條收斂判斷指令,根據(jù)譯出的微指令,數(shù)據(jù)處理單元判斷更新后的參數(shù)向量θn+1是否收斂:若收斂,運算結(jié)束;否則,迭代次數(shù)n的值增長1,轉(zhuǎn)回執(zhí)行步驟s5。

作為本發(fā)明的還一個方面,本發(fā)明還提供了一種執(zhí)行hessian-free訓(xùn)練算法的裝置,所述裝置的控制器中固化有執(zhí)行如上所述的執(zhí)行hessian-free訓(xùn)練算法的方法的程序。

基于上述技術(shù)方案可知,本發(fā)明的裝置和方法具有如下有益效果:使用該裝置可以實現(xiàn)hessian-free訓(xùn)練算法,完成對各種神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,如自動編碼器(auto-encoders)、卷積神經(jīng)網(wǎng)絡(luò)(rnn)等;通過采用專門用于執(zhí)行hessian-free訓(xùn)練算法的設(shè)備,可以解決數(shù)據(jù)的通用處理器運算性能不足,前段譯碼開銷大的問題,加速相關(guān)應(yīng)用的執(zhí)行速度;同時,對數(shù)據(jù)緩存單元的應(yīng)用,避免了反復(fù)向內(nèi)存讀取數(shù)據(jù),降低了內(nèi)存訪問的帶寬。

附圖說明

圖1為根據(jù)本發(fā)明一實施例的用于實現(xiàn)hessian-free訓(xùn)練算法相關(guān)應(yīng)用的裝置的整體結(jié)構(gòu)示例框圖;

圖2為根據(jù)本發(fā)明一實施例的用于實現(xiàn)hessian-free訓(xùn)練算法相關(guān)應(yīng)用的裝置中數(shù)據(jù)處理模塊的示例框圖;

圖3為根據(jù)本發(fā)明一實施例的用于實現(xiàn)hessian-free訓(xùn)練算法相關(guān)應(yīng)用的運算流程圖。

具體實施方式

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明作進一步的詳細說明。通過以下詳細描述,本發(fā)明的其它方面、優(yōu)勢和突出特征對于本領(lǐng)域技術(shù)人員將變得顯而易見。

在本說明書中,下述用于描述本發(fā)明原理的各種實施例只是說明,不應(yīng)該以任何方式解釋為限制發(fā)明的范圍。參照附圖的下述描述用于幫助全面理解由權(quán)利要求及其等同物限定的本發(fā)明的示例性實施例。下述描述包括多種具體細節(jié)來幫助理解,但這些細節(jié)應(yīng)認為僅僅是示例性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)認識到,在不背離本發(fā)明的范圍和精神的情況下,可以對本文中描述的實施例進行多種改變和修改。此外,為了清楚和簡潔起見,省略了公知功能和結(jié)構(gòu)的描述。此外,貫穿附圖,相同參考數(shù)字用于相似功能和操作。

本發(fā)明公開了一種用于執(zhí)行hessian-free訓(xùn)練算法的裝置,包括指令緩存單元、指令譯碼單元、直接內(nèi)存訪問單元、數(shù)據(jù)處理模塊和數(shù)據(jù)緩存模塊。使用該裝置可以實現(xiàn)hessian-free訓(xùn)練算法,完成對各種神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,如自動編碼器(auto-encoders)、卷積神經(jīng)網(wǎng)絡(luò)(rnn)等。每次迭代時,對誤差函數(shù)(目標函數(shù))做二階泰勒展開,并且添加阻尼項,作為目標函數(shù)的估計,之后根據(jù)當前的梯度、高斯-牛頓矩陣、阻尼函數(shù)(damplingfunction)和阻尼系數(shù)(damplingconstant),用有預(yù)條件的共軛梯度法(preconditioningcg-minimize)求得更新向量,更新待更新參數(shù)。持續(xù)迭代直至待更新參數(shù)向量收斂。

更具體地,本發(fā)明的裝置包括直接內(nèi)存控制單元、指令緩存單元、控制器單元、數(shù)據(jù)緩存單元和數(shù)據(jù)處理模塊。其中,直接內(nèi)存訪問單元能夠訪問外部地址空間,可以向裝置內(nèi)部各個緩存單元讀寫數(shù)據(jù),完成數(shù)據(jù)的加載和存儲,具體包括向指令緩存單元讀取指令,從指定存儲單元之間讀取待更新參數(shù)和對應(yīng)的梯度值到數(shù)據(jù)處理單元,將更新后的參數(shù)向量從數(shù)據(jù)處理模塊直接寫入外部指定空間;指令緩存單元通過直接內(nèi)存訪問單元讀取指令,并緩存讀入的指令;控制器單元從指令緩存單元中讀取指令,將指令譯碼為控制其他模塊行為的微指令并將其發(fā)送給其他模塊如直接內(nèi)存訪問單元、數(shù)據(jù)緩存單元、數(shù)據(jù)處理模塊等;數(shù)據(jù)緩存單元存儲裝置運行中需要的一些中間變量,并對這些變量做初始化及更新操作;數(shù)據(jù)處理模塊根據(jù)指令做相應(yīng)的運算操作。

此外,本發(fā)明還公開了一種執(zhí)行hessian-free訓(xùn)練算法的方法,包括以下步驟:

步驟(1),通過指令,完成數(shù)據(jù)緩存單元的初始化操作,即初始化f(θ)的二階估計具體來說,是對其中的梯度高斯-牛頓矩陣gf、阻尼系數(shù)λ和阻尼函數(shù)進行置零操作。

步驟(2),通過io指令,完成直接內(nèi)存訪問單元從外部空間讀取待更新參數(shù)向量的操作。

步驟(3),數(shù)據(jù)處理模塊根據(jù)相應(yīng)指令,在θn處對誤差函數(shù)f(θ)進行二階泰勒展開,并添加阻尼項得到f(θ)在θn附近的估計

其中,gf是f在θn處的高斯-牛頓矩陣;δn是更新向量;阻尼系數(shù)λ是用lm式啟發(fā)式(levenburg-marquardtstyleheuristics)的方法求得;阻尼函數(shù)是根據(jù)訓(xùn)練模型預(yù)先確定好的函數(shù)在θn處的值,比如進行rnn訓(xùn)練時,s和f類似,是距離函數(shù),gs是s在θn處的高斯-牛頓矩陣,μ(weightingconstant)是一個預(yù)先確定好的正數(shù)。

步驟(4),數(shù)據(jù)處理模塊根據(jù)相應(yīng)的指令,進行有預(yù)條件的共軛梯度法求δn使得達到最小值,并把θn更新為θn+1的操作。更新操作如下:

θn+1=θn+δn;

值得一提的是,在進行用有預(yù)條件的共軛梯度法過程中,只用“mini-batch”而不是所有樣本,并且其中涉及的高斯-牛頓矩陣乘向量的運算都是通過做隱式近似計算(pearlmutter的r{}-method)。這樣既提高了大數(shù)據(jù)學(xué)習的效率或者說提高數(shù)據(jù)運算模塊的運算效率,也避免了運算量隨參數(shù)數(shù)量平方增長的情況。

步驟(5),數(shù)據(jù)處理單元判斷更新后的參數(shù)向量是否收斂,若收斂,運算結(jié)束,否則,轉(zhuǎn)到步驟(2)處繼續(xù)執(zhí)行。

根據(jù)本發(fā)明實施例實現(xiàn)的hessian-free訓(xùn)練算法的裝置,可以用以支持使用hessian-free訓(xùn)練算法方面的應(yīng)用。在數(shù)據(jù)緩存單元開辟一個空間存儲誤差函數(shù)在每一代待更新參數(shù)附近的二階估計,在每次進行有預(yù)條件的共軛梯度法時,利用該二階估計計算一個更新向量,然后進行對待更新向量的更新操作。重復(fù)進行上述步驟,直至待更新向量收斂。

下面結(jié)合附圖的本發(fā)明的技術(shù)方案進行進一步闡述說明。

圖1示出了根據(jù)本發(fā)明一實施例的用于實現(xiàn)hessian-free訓(xùn)練算法的裝置的整體結(jié)構(gòu)示例框圖。如圖1所示,該裝置包括直接內(nèi)存訪問單元1、指令緩存單元2、控制器單元3、數(shù)據(jù)緩存單元4和數(shù)據(jù)處理模塊5,均可以通過硬件電路實現(xiàn)。

直接內(nèi)存訪問單元1能夠訪問外部地址空間,可以向裝置內(nèi)部各個緩存單元讀寫數(shù)據(jù),完成數(shù)據(jù)的加載和存儲。具體包括向指令緩存單元2讀取指令,從指定存儲單元之間讀取待更新參數(shù)到數(shù)據(jù)處理單元5,將更新后的參數(shù)向量從數(shù)據(jù)處理模塊5直接寫入外部指定空間。

指令緩存單元2通過直接內(nèi)存訪問單元1讀取指令,并緩存讀入的指令。

控制器單元3從指令緩存單元2中讀取指令,將指令譯碼為控制其他模塊行為的微指令并將其發(fā)送給其他模塊如直接內(nèi)存訪問單元1、數(shù)據(jù)緩存單元4、數(shù)據(jù)處理模塊5等。

數(shù)據(jù)緩存單元4在裝置初始化時初始化具體來說,是初始化其中的梯度高斯-牛頓矩陣gf、阻尼系數(shù)λ和阻尼函數(shù)在第n次待更新參數(shù)向量θn的更新開始前,會將讀出到數(shù)據(jù)處理模塊5中。在數(shù)據(jù)處理模塊5中得到更新向量δn,將θn更新為θn+1,對應(yīng)的更新為然后將寫入至數(shù)據(jù)緩存單元4(新的數(shù)據(jù)將以前的相對應(yīng)數(shù)據(jù)覆蓋),用于下次使用。

數(shù)據(jù)處理模塊5從數(shù)據(jù)緩存單元4中讀取通過直接內(nèi)存訪問單元1從外部指定空間中讀取待更新參數(shù)向量θn。在模塊內(nèi)得到更新向量δn,將θn更新為θn+1,對應(yīng)的更新為然后將寫入至數(shù)據(jù)緩存單元4,將θn+1通過直接內(nèi)存訪問單元1寫入到外部指定空間中。

圖2示出了根據(jù)本發(fā)明實施例的用于實現(xiàn)hessian-free訓(xùn)練算法相關(guān)應(yīng)用的裝置中數(shù)據(jù)處理模塊的示例框圖。如圖2所示,數(shù)據(jù)處理模塊包括運算控制子模塊51、梯度運算子模塊52、阻尼項運算子模塊53、高斯-牛頓矩陣運算子模塊54、共軛梯度法運算子模塊55以及基本運算子模塊56。其中,基本運算子模塊56進行的是矩陣、向量之間的加乘等基礎(chǔ)運算,52、53、54、55子模塊都會調(diào)用56子模塊,并且根據(jù)情況,這些模塊互相之間也允許互相調(diào)用。

圖3示出了根據(jù)hessian-free訓(xùn)練算法進行相關(guān)運算的裝置的總體流程圖。

在步驟s1,在指令緩存單元2的首地址處預(yù)先存入一條io指令。

在步驟s2,運算開始,控制單元3從指令緩存單元2的首地址讀取該條io指令,根據(jù)譯出的微指令,直接內(nèi)存訪問單元1從外部地址空間讀取所有與hessian-free計算有關(guān)的所有指令,并將其緩存入指令緩存單元2中。

在步驟s3,控制器單元3從指令緩存單元2讀入一條io指令,根據(jù)譯出的微指令,直接內(nèi)存訪問單元1從外部空間讀取初始待更新參數(shù)向量θ0到數(shù)據(jù)處理模塊5中。

在步驟s4,控制器單元3從指令緩存單元2讀入賦值指令,根據(jù)譯出的微指令,數(shù)據(jù)緩存單元4中的初始化,數(shù)據(jù)處理單元5中的迭代次數(shù)n被設(shè)置為0。

在步驟s5,控制器單元3從指令緩存單元2讀入一條io指令,根據(jù)譯出的微指令,直接內(nèi)存訪問單元1從外部空間讀取待更新參數(shù)向量θn傳入到數(shù)據(jù)處理模塊5中。

在步驟s6,控制器單元3從指令緩存單元2讀入一條對誤差函數(shù)在當前參數(shù)向量值附近進行二階估計的指令,根據(jù)譯出的微指令,進行求f(θ)在θn附近的二階估計的操作。該操作中,指令被送至運算控制子模塊51,運算控制子模塊51發(fā)送相應(yīng)指令進行以下操作:利用梯度運算子模塊52計算利用高斯-牛頓運算子模塊54和基本運算子模塊56中的矩陣乘法運算,得到f在θn處的高斯-牛頓矩陣gf;利用阻尼項運算子模塊53和基本運算子模塊56執(zhí)行l(wèi)m啟發(fā)式方法得到阻尼系數(shù)λ,進而得到阻尼項最后,得到的表達式存入數(shù)據(jù)緩存單元4。

在步驟s7,控制器單元3從指令緩存單元2讀取一條數(shù)據(jù)傳輸指令,根據(jù)譯出的微指令,將從數(shù)據(jù)緩存單元4傳送到數(shù)據(jù)處理單元5中。

在步驟s8,控制器單元3從指令緩存單元2讀取一條參數(shù)更新運算指令,根據(jù)譯出的微指令,進行用有預(yù)條件的共軛梯度法求δn使得達到最小值,并把θn更新為θn+1的操作。直接內(nèi)存訪問單元1從外部空間讀取待更新參數(shù)向量θn傳入到數(shù)據(jù)處理模塊5中。運算控制子模塊51控制相關(guān)運算模塊進行如下操作:利用共軛梯度運算子模塊55和基本運算子模塊56得到更新向量δn。這其中,根據(jù)阻尼函數(shù)的表達式,也可能需要調(diào)用高斯牛頓-運算模塊(比如之前提到的rnn的例子)。最后,利用基本運算子模塊56中的向量加法將θn更新為θn+1。

在步驟s9,控制器單元3從指令緩存單元2讀取一條io指令,根據(jù)譯出的微指令,更新后的參數(shù)向量θn+1從數(shù)據(jù)處理單元5通過直接內(nèi)存訪問單元1傳送至外部指定空間。

在步驟s10,控制器單元從指令緩存單元2讀取一條收斂判斷指令,根據(jù)譯出的微指令,數(shù)據(jù)處理單元判斷更新后的參數(shù)向量θn+1是否收斂:若收斂,運算結(jié)束;否則,迭代次數(shù)n的值增長1,轉(zhuǎn)回執(zhí)行步驟s5。

前面的附圖中所描繪的進程或方法可通過包括硬件(例如,電路、專用邏輯等)、固件、軟件(例如,被承載在非瞬態(tài)計算機可讀介質(zhì)上的軟件),或兩者的組合的處理邏輯來執(zhí)行。雖然上文按照某些順序操作描述了進程或方法,但是,應(yīng)該理解,所描述的某些操作能以不同順序來執(zhí)行。此外,可并行地而非順序地執(zhí)行一些操作。

在前述的說明書中,參考其特定示例性實施例描述了本發(fā)明的各實施例。顯然,可對各實施例做出各種修改,而不悖離所附權(quán)利要求所述的本發(fā)明的更廣泛的精神和范圍。相應(yīng)地,說明書和附圖應(yīng)當被認為是說明性的,而不是限制性的。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1