Rnn代碼測試方法及裝置的制造方法
【專利說明】
【技術領域】
[0001]本發(fā)明涉及軟件技術領域,尤其涉及一種RNN代碼測試方法及裝置。
【【背景技術】】
[0002]深度學習是大數(shù)據(jù)分析領域的熱門技術,被廣泛用于圖像識別、語音識別、自然語言理解等人工智能領域。深度學習算法的核心是其預測模塊,實現(xiàn)該預測模塊的一個經典模型是循環(huán)神經網絡(Recurrent Neural Network, DNN)。
[0003]從代碼角度來說,在基于深度學習的應用的代碼實現(xiàn)中,實現(xiàn)RNN功能的代碼(簡稱RNN代碼)是整個代碼中的核心部分,因此對RNN代碼進行測試以保證其正確性,對整個代碼質量起著關鍵性作用。但是,由于深度學習算法輸出的是概率值,因此傳統(tǒng)的黑盒測試方法等并不適合RNN代碼。另外,由于RNN屬于非線性模型,因此針對線性模型的蛻變測試方法也不適合RNN代碼。因此,如何對DNN代碼進行功能測試以確保其能做出正確的預測,是目前亟需解決的問題。
【
【發(fā)明內容】
】
[0004]本發(fā)明的多個方面提供一種RNN代碼測試方法及裝置,用以實現(xiàn)對RNN代碼的功能測試。
[0005]本發(fā)明的一方面,提供一種RNN代碼測試方法,包括:
[0006]控制RNN代碼實現(xiàn)的RNN中的隱藏層和輸出層分別作為待測試層;
[0007]以初始矩陣作為所述RNN代碼中實現(xiàn)所述待測試層功能的代碼段的輸入,控制所述代碼段運行,以獲取所述代碼段輸出的初始結果矩陣;
[0008]按照預設的測試次數(shù),每次改變所述初始矩陣中的元素值,以獲得參考矩陣,并以所述參考矩陣作為所述代碼段的輸入,重新控制所述代碼段運行,以獲取所述代碼段輸出的參考結果矩陣,判斷所述參考結果矩陣中和所述初始結果矩陣中對應于所述初始矩陣中被改變的元素值的位置上的元素值是否均發(fā)生變化;
[0009]若每次的判斷結果均為是,判定所述代碼段的邏輯正確。
[0010]作為本發(fā)明的進一步改進,所述初始矩陣包括輸入矩陣和權重矩陣中的至少一個。
[0011 ] 作為本發(fā)明的進一步改進,若所述待測試層為隱藏層,則所述輸入矩陣包括:輸入層提供的t時刻的信號矩陣以及隱藏層在t-1時刻輸出的結果矩陣中的至少一個,所述權重矩陣包括:輸入層與隱藏層之間的權重矩陣以及上下文層與隱藏層之間的權重矩陣中的至少一個,t大于等于I ;
[0012]若所述待測試層為輸出層,則所述輸入矩陣包括隱藏層在t時刻輸出的結果矩陣;所述權重矩陣包括:隱藏層與輸出層之間的權重矩陣。
[0013]作為本發(fā)明的進一步改進,所述每次改變所述初始矩陣中的元素值,以獲得參考矩陣,包括:
[0014]每次改變所述初始矩陣中至少兩個元素值,以獲得所述參考矩陣。
[0015]作為本發(fā)明的進一步改進,所述每次改變所述初始矩陣中至少兩個元素值,以獲得所述參考矩陣,包括:
[0016]每次改變所述初始矩陣中對應于所述待測試層中至少兩個神經元的元素值,以獲得所述參考矩陣。
[0017]本發(fā)明的另一方面,提供一種RNN代碼測試裝置,包括:
[0018]預處理模塊,用于控制RNN代碼實現(xiàn)的RNN中的隱藏層和輸出層分別作為待測試層;
[0019]第一控制模塊,用于以初始矩陣作為所述RNN代碼中實現(xiàn)所述待測試層功能的代碼段的輸入,控制所述代碼段運行,以獲取所述代碼段輸出的初始結果矩陣;
[0020]第二控制模塊,用于按照預設的測試次數(shù),每次改變所述初始矩陣中的元素值,以獲得參考矩陣,并以所述參考矩陣作為所述代碼段的輸入,重新控制所述代碼段運行,以獲取所述代碼段輸出的參考結果矩陣;
[0021]驗證模塊,用于判斷所述參考結果矩陣中和所述初始結果矩陣中對應于所述初始矩陣中被改變的元素值的位置上的元素值是否均發(fā)生變化,若每次的判斷結果均為是,判定所述代碼段的邏輯正確。
[0022]作為本發(fā)明的進一步改進,所述初始矩陣包括輸入矩陣和權重矩陣中的至少一個。
[0023]作為本發(fā)明的進一步改進,若所述待測試層為隱藏層,則所述輸入矩陣包括:輸入層提供的t時刻的信號矩陣以及隱藏層在t-1時刻輸出的結果矩陣中的至少一個,所述權重矩陣包括:輸入層與隱藏層之間的權重矩陣以及上下文層與隱藏層之間的權重矩陣中的至少一個,t大于等于I ;
[0024]若所述待測試層為輸出層,則所述輸入矩陣包括隱藏層在t時刻輸出的結果矩陣;所述權重矩陣包括:隱藏層與輸出層之間的權重矩陣。
[0025]作為本發(fā)明的進一步改進,所述第二控制模塊具體用于:
[0026]每次改變所述初始矩陣中至少兩個元素值,以獲得所述參考矩陣。
[0027]作為本發(fā)明的進一步改進,所述第二控制模塊具體用于:
[0028]每次改變所述初始矩陣中對應于所述待測試層中至少兩個神經元的元素值,以獲得所述參考矩陣。
[0029]在本發(fā)明中,分別將RNN中的隱藏層和輸出層作為待測試層,以初始矩陣作為RNN代碼中實現(xiàn)待測試層的代碼段的輸入,控制該代碼段運行以獲取代碼段輸出的初始結果矩陣,按照預設的測試次數(shù),每次改變初始矩陣中的元素值,獲得參考矩陣,重新以參考矩陣作為代碼段的輸入,重新控制代碼段運行,以獲得參考結果矩陣,通過比較參考結果矩陣和初始結果矩陣中對應于被改變的元素值的位置上的元素值是否均發(fā)生變化,來判斷該代碼段的邏輯是否正確,若每次的判斷結果均為發(fā)生變化,則判定代碼段的邏輯是正確的,進而實現(xiàn)對RNN代碼的功能測試。
【【附圖說明】】
[0030]為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0031]圖1為本發(fā)明一實施例提供的RNN代碼測試方法的流程示意圖;
[0032]圖2為本發(fā)明一實施例提供的傳統(tǒng)前饋神經網絡的結構示意圖;
[0033]圖3為本發(fā)明一實施例提供的RNN的結構示意圖;
[0034]圖4為本發(fā)明一實施例提供的RNN代碼測試裝置的結構示意圖。
【【具體實施方式】】
[0035]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0036]圖1為本發(fā)明一實施例提供的RNN代碼測試方法的流程示意圖。如圖1所示,該方法包括:
[0037]101、控制RNN代碼實現(xiàn)的RNN中的隱藏層和輸出層分別作為待測試層。
[0038]102、以初始矩陣作為RNN代碼中實現(xiàn)待測試層功能的代碼段的輸入,控制代碼段運行,以獲取代碼段輸出的初始結果矩陣。
[0039]103、按照預設的測試次數(shù),每次改變初始矩陣中的元素值,以獲得參考矩陣,并以參考矩陣作為代碼段的輸入,重新控制代碼段運行,以獲取代碼段輸出的參考結果矩陣,判斷參