TWI743710B - 卷積神經網路的方法、電子裝置與電腦程式產品 - Google Patents
卷積神經網路的方法、電子裝置與電腦程式產品 Download PDFInfo
- Publication number
- TWI743710B TWI743710B TW109109056A TW109109056A TWI743710B TW I743710 B TWI743710 B TW I743710B TW 109109056 A TW109109056 A TW 109109056A TW 109109056 A TW109109056 A TW 109109056A TW I743710 B TWI743710 B TW I743710B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- weight
- bit width
- bits
- weights
- Prior art date
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本發明提出一種卷積神經網路的方法,此方法包括:決定位元寬度並取得對應此位元寬度的縮放因子;取得輸入特徵與對應一卷積層的多個權重,截斷每一個權重以取得多個位元,這些位元的個數相同於位元寬度;將這些位元所代表的權重乘上縮放因子以產生縮放後權重;以及根據縮放後權重對輸入特徵執行卷積運算。
Description
本發明是有關於可縮放位元寬度的卷積神經網路以及位元寬度的預測方法,特別的是會由一縮放因子來調整定點數權重。
卷積神經網路(Convolutional Neural Network,CNN)是一種前饋型神經網路,其通常包含多組的卷積層(convolution layer)及池化層(pooling layer)。研究顯示,深度越深則卷積神經網路的分類能力越強,但運算會隨之增加,在一些系統中難以執行,因此有時會犧牲分類的精確度來降低網路的複雜度及權重的儲存量來使得卷積神經網路可在有限的資源上運行。習知技術提出定點(fixed point)數來表示卷積層中的權重,如此一來可以減少計算量。但習知的訓練方式對於不同的位元寬度必須訓練不同的權重,例如當想要採用3位元與2位元的權重時,這兩組權重必須分開訓練以及儲存,這增加訓練計算的負擔且增加了需要的儲存空間。因此,如何
提出一個可縮放位元寬度的卷積神經網路,為此領域技術人員所關心的議題。
本發明的實施例提出一種卷積神經網路的方法,適用於電子裝置,此方法包括:決定位元寬度並取得對應此位元寬度的縮放因子;取得輸入特徵與對應一卷積層的多個權重,截斷每一個權重以取得多個位元,這些位元的個數相同於位元寬度;將這些位元所代表的權重乘上縮放因子以產生縮放後權重;以及根據縮放後權重對輸入特徵執行卷積運算。
在一些實施例中,在訓練階段從每一個權重的最高有效位元訓練至最低有效位元,其中當訓練第k個位元時,(k-1)個最高有效位元被固定。
在一些實施例中,上述的方法更包括:在訓練階段中根據剩餘浮點數值的正負號來決定第k個位元,並將第k個位元與(k-1)個最高有效位元結合以執行前向傳播運算;執行反向傳播運算以更新剩餘浮點數值;以及根據更新後的剩餘浮點數值的正負號來決定第k個位元。
在一些實施例中,上述的方法更包括:對數位影像執行物件偵測運算以取得對應至多個物件類別的多個分類信心數值;以及若這些分類信心數值中的最大值與次大值之間的差異小於第一閾值,增加位元寬度;若最大值與次大值之間的差異大於第二閾值,減少位元寬度。
在一些實施例中,根據增加或減少後的位元寬度對影片的下一張畫面執行物件偵測運算。
在一些實施例中,卷積層包括多個濾波器,每一個濾波器具有對應的縮放因子。
以另一個角度來說,本發明的實施例提出一種電腦程式產品,用以載入電子裝置並由電子裝置執行以完成上述卷積神經網路的方法。
以另一個角度來說,本發明的實施例提出一種電子裝置,包括記憶體與運算電路。記憶體儲存一卷積層的多個權重與多個縮放因子,其中每一個縮放因子對應至不同的位元個數。運算電路用以決定位元寬度並取得對應的縮放因子。運算電路還用以取得輸入特徵,截斷每一個權重以取得多個位元,這些位元的個數相同於位元寬度。運算電路還用以將這些位元所代表的權重乘上所取得的縮放因子以產生縮放後權重,並根據縮放後權重對輸入特徵執行卷積運算。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100:電子裝置
110:記憶體
111:權重
112:縮放因子
120:運算電路
210:反向傳播運算
301~304:步驟
[圖1]是根據一實施例繪示電子裝置的示意圖。
[圖2]是根據一實施例繪示訓練階段的示意圖。
[圖3]根據一實施例繪示卷積神經網路的方法的流程圖。
關於本文中所使用之「第一」、「第二」等,並非特別指次序或順位的意思,其僅為了區別以相同技術用語描述的元件或操作。
本揭露首先提出一種包含縮放因子的漸進式神經網路的架構,可獲得以定點數表示的網路權重並配合相對應的縮放因子,使得在各種不同截斷長度下能夠實現最佳優化的推論精確度,有助於應用於位元串列的神經網路加速器。而對於如何得到權重及縮放因子,本揭露也提出的相對應的訓練方法。再者,本揭露也提出了新的預測位元寬度機制,能夠根據輸入複雜度的不同,依照位元寬度的層面來調整神經網路的複雜度,此判斷機制以當前網路輸出的結果來判斷神經網路所需要的位元寬度,能夠由神經網路自行決定該用多少位元寬度來進行運算,並且減少冗餘的運算。
圖1是根據一實施例繪示電子裝置的示意圖。請參照圖1,電子裝置100可以實作為智慧型手機、平板電腦、監視器、車用電子裝置或各種形式的嵌入式系統或電腦系統。電子裝置100包括了記憶體110與運算電路120,記憶體110可為任意的非揮發性記憶體,運算電路120可為中央處理器、微處理器、微控制器、影像處理晶片、人工智慧晶片、特殊應用積體電路等。運算電路120用以執行卷積神經網路中的各個運算,如卷積運算、池化
運算、全連接層運算等。
記憶體110中儲存有多個權重111與多個縮放因子112,表示為α 1...α 7,每個縮放因子是對應至一個位元個數,α 1對應至一個位元,α 2對應至兩個位元,以此類推。當在推論階段時,運算電路120可以選擇任意的位元寬度,並取得權重111中相對應的位元以及對應的縮放因子112以執行卷積運算。舉例來說,如果位元寬度為1,則運算電路120會取得每個權重111的最高有效位元以及縮放因子α 1,最高有效位元所表示的權重會與縮放因子α 1相乘,並用相乘後的權重來執行卷積運算。如果位元寬度為3,則運算電路120會取得每個權重111的三個最高有效位元以及縮放因子α 3,這三個最高有效位元所表示的權重會與縮放因子α 3相乘,並用相乘後的權重來執行卷積運算,以此類推。
詳細來說,每個權重111是定點數(fixed-point number),其中第i個權重Wi編碼為wi,1wi,2wi,3...wi,L,L為正整數,表示每個權重111共有L個位元。第i個權重W i 中
L個位元所表示的數值為,其中w i,j 為第i個權重的第j個位元,j為正整數。當選擇一個位元寬度m以後,第i個權重Wi會被截斷以取得其中的m個位元,這m個位元所表示的權重會與對應的縮放因子相乘以得到一個縮放後權重,表示為以下數學式1。
αm為對應至位元寬度m的縮放因子,值得注意的是不同的位元寬度m會對應至不同的縮放因子αm。在推論階段,運算電路120會根據上述的縮放後權重對輸入特徵值行卷積運算,表示為以下數學式2,其中xi為輸入特徵中的第i個數值,Wi m是第i個權重中m個位元所表示的權重,由於乘上縮放因子αm是線性的運算,因此縮放因子αm可提取到卷積運算之外。
[數學式2]αm×Σxi×Wi m
當進行卷積神經網路中的第一個卷積層時,輸入特徵xi可為輸入影像,當進行第二個以上的卷積層時,輸入特徵可為前一層卷積層或池化層所產生的特徵圖(feature map)。上述數學式2可應用於卷積神經網路中的任何一個卷積層。由於定點數權重Wi m只採用了m個位元,因此會與浮點數權重有些許的差距,縮放因子αm是用以讓定點數權重接近浮點數權重,但並不增加太多的計算量與記憶體空間。在一些實施例中,一個卷積層中所有的權重可採用相同的縮放因子αm,舉例來說,如果卷積層採用的濾波器大小為3 x 3,輸出特徵的通道數為10,輸入特徵xi的通道數為9,則卷積層中共有3 x 3 x 10 x 9個權重,這些權重都會乘上相同的縮放因子αm。在另一些實施例中,輸出特徵的每個通道都可以採用不同的縮放因子,具體來說,輸出特徵的每個通道都代表一個濾波器,因此當輸出特徵的通道
數為10即對應了10個濾波器,每個濾波器都具有3 x 3 x 9個權重且對應至一個縮放因子αm,n,n代表輸出特徵的第n個通道,也就是說當輸出特徵的通道數為10時共有10個縮放因子αm,n。
以下說明訓練階段。在訓練階段時每次只訓練權重的一個位元,並且訓練的順序是從權重的最高有效位元訓練至最低有效位元,每訓練一個位元以後,此位元會被固定(或稱凍結)不再改變。具體來說,圖2是根據一實施例繪示訓練階段的示意圖。在此假設(k-1)個最高有效位元已經訓練完(已被凍結),目前要訓練第k個位元。rWi表示除了凍結的k個位元以外權重Wi剩餘的浮點數值(亦稱為剩餘浮點數值),當訓練第一個位元時剩餘浮點數值rWi可以被當作是當前的浮點數,因為還沒有位元被凍結。為了訓練第k個位元,必須將剩餘浮點數值rWi進行前向傳播運算,也就是根據剩餘浮點數值rWi的正負號來決定第k個位元(若剩餘浮點數值rWi為正則第k個位元是“0”,否則是“1”),並將這第k個位元與(k-1)個最高有效位元結合以作為當前的權重Wi,可表示為以下數學式3。
接下來,權重Wi會乘上當前的縮放因子αk,再乘上輸入特徵xi,最後加總起來以完成卷積運算。根據訓練資料計算出損失(loss)以後,執行反向傳播運算210以更新剩
餘浮點數值rWi,經過多次訓練的迭代以後,以更新後的剩餘浮點數值rWi的正負號作為第k個位元,這樣便完成第k個位元的訓練,接下來就能訓練第(k+1)個位元。
在此說明如何決定縮放因子αk。在此實施例中,可以透過以下數學式4、5所代表的最佳化演算法來計算出縮放因子αk,如上所述,縮放因子αk是用以讓定點數權重Wi k接近浮點數權重(表示為Wi *)。
[數學式4]J(Wi k,αk)=∥Wi *-αk×Wi k∥2
在一些實施例中,最佳化的縮放因子αk等於Wi *的平均,由於Wi k的最大值可以是(1-2-k),因此縮放因子α k 可由以下數學式6來計算。
其中N為權重的個數。根據上述揭示的內容可以訓練所有的縮放因子α1...α7以及權重中所有的位元,接下來便可以動態地決定位元寬度以採用合適的計算複雜度。一般來說,當畫面的複雜度越大時可以採用較大的位元寬度,複雜度較低時可以採用較小的位元寬度,以下提供一個方法來預測位元寬度。
在一些實施例中,卷積神經網路是要對一數位影像
(可以是單一張的靜態影像或是一段影片中的一張畫面)執行物件偵測運算,卷積神經網路最後一層網路的輸出代表多個物件類別中每個物件類別的分類信心數值(也代表分類為該類別的機率)。第一次的物件偵測運算可根據預設的位元寬度來執行,在一些實施例中是將整張畫面切割為多個區塊,每個區塊都可以取得多個分類信心數值,不同區塊相同類別的分類信心數值可以平均起來。做完平均以後,如果所有分類信心數值中的最大值與次大值之間的差異小於第一閾值,則表示不容易辨識不同的類別,辨識錯誤的機率比較大,因此可以增加位元寬度;相反地如果分類信心數值中的最大值與次大值之間的差異大於第二閾值,則可以減少位元寬度或維持位元寬度不變。增加或減少後的位元寬度可以用來執行第二次的物件偵測運算,而第二次的物件偵測運算可以套用在同一張靜態畫面中,或者套用在影片的下一張畫面中。舉例來說,當套用在靜態畫面時,第一次物件偵測運算的位元寬度可以採用1位元,如果畫面複雜度很大時再增加位元寬度,如果畫面複雜度很低則不執行第二次的物件偵測運算,藉此節省計算量。當套用在影片時,由於相鄰的兩張畫面的複雜度應該是相似,因此可以用前一張畫面的複雜度來預測下一張畫面的複雜度,前一張畫面的位元寬度例如為3,如果前一張畫面的複雜度很大,則可以增加位元寬度來處理下一張畫面,反之可以減少位元寬度來減少計算量。在一些實施例中可以將最大分類信心數值與此大分類信心數值之間的
差異分為多個數值範圍,不同的數值範圍可採用不同的位元寬度,這些數值範圍與上述的第一閾值、第二閾值可經由實驗來決定,本發明並不在此限。
圖3是根據一實施例繪示卷積神經網路的方法的流程圖。請參照圖3,在步驟301,決定位元寬度並取得對應此位元寬度的縮放因子,此位元寬度可以用任意的規則、預設值或演算法來決定。在步驟302,取得輸入特徵與對應一卷積層的多個權重,截斷每一個權重以取得多個位元,每個權重中位元的個數相同於位元寬度。在步驟303,將這些位元所代表的權重乘上縮放因子以產生縮放後權重。在步驟304,根據縮放後權重對輸入特徵執行卷積運算。然而,圖3中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,圖3中各步驟可以實作為多個程式碼或是電路,本發明並不在此限。此外,圖3的方法可以搭配以上實施例使用,也可以單獨使用,也就是說圖3的各步驟之間也可以加入其他的步驟。
以另外一個角度來說,本發明也提出了一電腦程式產品,此產品可由任意的程式語言及/或平台所撰寫,當此電腦程式產品被載入至電腦系統並執行時,可執行上述的方法。
在上述提出的方法中,在推論階段時可以動態地決定位元寬度,搭配縮放因子可以讓定點數權重接近浮點數權重以增加分類準確度。此外,上述的方法也提出位元寬度的預測方法,藉此可以在畫面複雜度低時採用較少的位
元寬度,減少計算量。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
210:反向傳播運算
Claims (9)
- 如請求項1所述之方法,更包括:在一訓練階段,從每一該些權重的最高有效位元訓練至最低有效位元,其中當訓練第k個位元時,(k-1)個最高有效位元被固定。
- 如請求項2所述之方法,更包括:在該訓練階段中,根據一剩餘浮點數值的正負號來決定該第k個位元,並將該第k個位元與該(k-1)個最高有效 位元結合以執行前向傳播運算;執行反向傳播運算以更新該剩餘浮點數值;以及根據更新後的該剩餘浮點數值的正負號來決定該第k個位元。
- 如請求項1所述之方法,更包括:對一數位影像執行物件偵測運算以取得對應至多個物件類別的多個分類信心數值;以及若該些分類信心數值中的一最大值與一次大值之間的差異小於一第一閾值,增加該位元寬度;以及若該最大值與該次大值之間的差異大於一第二閾值,減少該位元寬度。
- 如請求項5所述之方法,更包括: 根據增加或減少後的該位元寬度對一影片的下一畫面執行該物件偵測運算。
- 如請求項1所述之方法,其中該卷積層包括多個濾波器,每一該些濾波器具有對應的該縮放因子。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109109056A TWI743710B (zh) | 2020-03-18 | 2020-03-18 | 卷積神經網路的方法、電子裝置與電腦程式產品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109109056A TWI743710B (zh) | 2020-03-18 | 2020-03-18 | 卷積神經網路的方法、電子裝置與電腦程式產品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202137067A TW202137067A (zh) | 2021-10-01 |
TWI743710B true TWI743710B (zh) | 2021-10-21 |
Family
ID=79601036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109109056A TWI743710B (zh) | 2020-03-18 | 2020-03-18 | 卷積神經網路的方法、電子裝置與電腦程式產品 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI743710B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240004952A1 (en) * | 2022-06-29 | 2024-01-04 | Mediatek Singapore Pte. Ltd. | Hardware-Aware Mixed-Precision Quantization |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328647A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
TW201918939A (zh) * | 2017-11-07 | 2019-05-16 | 南韓商三星電子股份有限公司 | 用於學習低精度神經網路的方法及裝置 |
CN110033086A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
TW202004568A (zh) * | 2018-05-23 | 2020-01-16 | 倍加科技股份有限公司 | 應用在深度神經網路的全指數運算方法、電腦裝置及電腦可讀取的記錄媒體 |
-
2020
- 2020-03-18 TW TW109109056A patent/TWI743710B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328647A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
TW201918939A (zh) * | 2017-11-07 | 2019-05-16 | 南韓商三星電子股份有限公司 | 用於學習低精度神經網路的方法及裝置 |
TW202004568A (zh) * | 2018-05-23 | 2020-01-16 | 倍加科技股份有限公司 | 應用在深度神經網路的全指數運算方法、電腦裝置及電腦可讀取的記錄媒體 |
CN110033086A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
Also Published As
Publication number | Publication date |
---|---|
TW202137067A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102672004B1 (ko) | 저 정밀도 뉴럴 네트워크 학습을 위한 방법 및 장치 | |
CN109934331B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
WO2019238029A1 (zh) | 卷积神经网络系统和卷积神经网络量化的方法 | |
CN107340993B (zh) | 运算装置和方法 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
CN110349103A (zh) | 一种基于深度神经网络和跳跃连接的无干净标签图像去噪方法 | |
CN110109646B (zh) | 数据处理方法、装置和乘加器及存储介质 | |
US11544526B2 (en) | Computing device and method | |
CN114677548B (zh) | 基于阻变存储器的神经网络图像分类系统及方法 | |
CN109214502A (zh) | 神经网络权重离散化方法和系统 | |
TWI743710B (zh) | 卷積神經網路的方法、電子裝置與電腦程式產品 | |
US20220004849A1 (en) | Image processing neural networks with dynamic filter activation | |
EP3607496A1 (en) | Conditional graph execution based on prior simplified graph execution | |
US20170140264A1 (en) | Neural random access machine | |
CN118265983A (zh) | 存储器优化的对比学习 | |
CN110503182A (zh) | 深度神经网络中的网络层运算方法及装置 | |
JP6795721B1 (ja) | 学習システム、学習方法、及びプログラム | |
CN114202648B (zh) | 文本图像矫正方法、训练方法、装置、电子设备以及介质 | |
CN109145107A (zh) | 基于卷积神经网络的主题提取方法、装置、介质和设备 | |
CN110955405A (zh) | 一种输入数据的处理及指数值获取方法、装置及电子设备 | |
CN117009093A (zh) | 降低神经网络推理所需内存占用量的重计算方法和系统 | |
CN115905546A (zh) | 基于阻变存储器的图卷积网络文献识别装置与方法 | |
CN112819164B (zh) | 事理图谱的推理方法、装置及计算机设备 | |
JP6757349B2 (ja) | 固定小数点を用いて認識処理を行う多層の畳み込みニューラルネットワーク回路を実現する演算処理装置 | |
US20240005159A1 (en) | Simplification device and simplification method for neural network model |