IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 中興通訊股▲ふん▼有限公司の特許一覧

特許7461344畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体
<>
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図1
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図2A
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図2B
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図2C
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図3
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図4
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図5
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図6
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図7
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図8
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図9
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図10
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図11
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図12
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図13
  • 特許-畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-26
(45)【発行日】2024-04-03
(54)【発明の名称】畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体
(51)【国際特許分類】
   G06N 3/063 20230101AFI20240327BHJP
   G06F 17/10 20060101ALI20240327BHJP
【FI】
G06N3/063
G06F17/10 A
【請求項の数】 10
(21)【出願番号】P 2021516435
(86)(22)【出願日】2019-09-19
(65)【公表番号】
(43)【公表日】2022-01-11
(86)【国際出願番号】 CN2019106649
(87)【国際公開番号】W WO2020057593
(87)【国際公開日】2020-03-26
【審査請求日】2022-09-14
(31)【優先権主張番号】201811103473.9
(32)【優先日】2018-09-20
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】511151662
【氏名又は名称】中興通訊股▲ふん▼有限公司
【氏名又は名称原語表記】ZTE CORPORATION
【住所又は居所原語表記】ZTE Plaza,Keji Road South,Hi-Tech Industrial Park,Nanshan Shenzhen,Guangdong 518057 China
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】ヤン,シェンナン
(72)【発明者】
【氏名】ワン,ファン
(72)【発明者】
【氏名】ユー,ジンチン
(72)【発明者】
【氏名】ジュー,ジエンピン
【審査官】大塚 俊範
(56)【参考文献】
【文献】HEGDE, K. et al.,UCNN: Exploiting Computational Reuse in Deep Neural Networks via Weight Repetition,arXiv:1804.06508 [cs.NE],2018年04月18日,pp. 1-14,[online], [retrieved on 2023-08-24]. Retrieved from <https://arxiv.org/abs/1804.06508> <doi: 10.48550/arXiv.1804.06508>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するステップであって、前記畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する前記ステップは、絶対値が同じの重み値を1つの類別に分類し、又は、2の冪乗倍数である重み値を1つの類別に分類し、又は、正の重み値と負の重み値をそれぞれ1つの類別にするステップを含むステップと、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するステップであって、前記インジケータに対応する操作は、重み値、終了アドレス、シフト値及び加減算タイプを含むステップと、
前記重み値のアドレスに応じて、対応する処理対象データを取得するステップと、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するステップと、を含む、
畳み込みニューラルネットワークの畳み込み処理方法。
【請求項2】
前記畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも2つのサブ畳み込みカーネルを獲得するステップと、
各前記サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、前記サブ畳み込みカーネルにおける重み値を獲得するステップと、をさらに含む、
請求項1に記載の方法。
【請求項3】
前記重み値のアドレスに応じて、対応する処理対象データを取得する前記ステップは、
入力された元の処理対象データ集合から、前記サブ畳み込みカーネルと列幅、行幅及びチャネル数がいずれも同じの処理対象データ集合を決定するステップと、
前記処理対象データ集合内の各処理対象データのアドレスと前記サブ畳み込みカーネル内の相応の重み値のアドレスとの間の対応関係を確立するステップと、
前記対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得するステップと、を含む、
請求項1又は請求項2に記載の方法。
【請求項4】
前記インジケータに応じて、、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する前記ステップは、
前記インジケータに応じて、、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得するステップと、
前記累積和に、対応する重み値を掛けて部分和を獲得するステップと、
全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得するステップと、を含む、
請求項3に記載の方法。
【請求項5】
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得する前記ステップは、
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データに対して前処理を行うステップと、前処理された全ての処理対象データの累積和を取得するステップと、を含み、ここで、前記処理対象データはゼロではない、
請求項4に記載の方法。
【請求項6】
前記累積和に、対応する重み値を掛けて部分和を獲得する前記ステップは、
前記累積和が予め設定されたオフセット値以上であると決定された場合、前記累積和に、対応する重み値を掛けて部分和を獲得するステップを含む、
請求項4に記載の方法。
【請求項7】
全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得する前記ステップは、
前記部分和と予め設定されたオフセット値との差分値を決定するステップと、
前記部分和と予め設定されたオフセット値との差分値がゼロ以上であると決定された場合、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得するステップと、を含む、
請求項4に記載の方法。
【請求項8】
畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する前記ステップは、
前記サブ畳み込みカーネルにおける同じ重み値を1つの類別に分類するステップをさらに含む、
請求項1に記載の方法。
【請求項9】
絶対値が同じの重み値を1つの類別に分類し、又は、2の冪乗倍数である重み値を1つの類別に分類し、又は、正の重み値と負の重み値をそれぞれ1つの類別にするような方式により、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するように構成される分類ユニットと、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するように構成される生成ユニットであって、前記インジケータに対応する操作は、重み値、終了アドレス、シフト値及び加減算タイプを含む生成ユニットと、
前記重み値のアドレスに応じて、対応する処理対象データを取得するように構成される取得ユニットと、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するように構成される畳み込み処理ユニットと、を含む、
畳み込みニューラルネットワークの畳み込み処理装置。
【請求項10】
コンピュータ実行可能な命令が記憶されているコンピュータ可読記憶媒体であって、前記コンピュータ実行可能な命令は、請求項1~8のいずれか1項に記載の畳み込みニューラルネットワークの畳み込み処理方法を実行できるように構成される、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施例は、ニューラルネットワーク深層学習技術に関し、特に、畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体に関するが、これに限定されない。
【背景技術】
【0002】
関連技術において、人工知能技術は世界的に急速に発展しており、業界では人工知能技術の研究に努力して、著しい成果を上げた。特に、画像の検出と認識及び言語認識などの方向では、人工知能の認識率はすでに人間を超えている。
【0003】
同時に、ニューラルネットワークの規模も拡大し続け、典型的なニューラルネットワークは、数十層、さらには数百層になるのが普通であり、ニューロン間の接続の数は億単位で数えるようになり、即ち、アルゴリズムの性能指標が向上していくに従って、計算量も増え続き、推定を完了するのに必要な時間も長くなる。
【0004】
しかし、実際の応用では、このような膨大な演算量において、全ての計算が有効な計算であるとは限らず、アルゴリズムは、固定小数点化又はスパース化され、即ち訓練によりアルゴリズムに対して圧縮、枝刈り又はクラスタなどを行って、現れた重みがゼロの点が実際の実行では計算する必要がない点である。
【0005】
関連技術に存在する上記の問題については、現在、効果的な解決手段が提案されていない。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体を提供する。
【課題を解決するための手段】
【0007】
本開示の実施例の技術案は、以下のように実現される。
【0008】
第1態様では、本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法を提供し、前記方法は、
前記畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するステップと、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するステップと、
前記重み値のアドレスに応じて、対応する処理対象データを取得するステップと、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するステップと、を含む。
【0009】
第2態様では、本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理装置を提供し、前記装置は、
前記畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するように構成される分類ユニットと、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するように構成される生成ユニットと、
前記重み値のアドレスに応じて、対応する処理対象データを取得するように構成される取得ユニットと、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するように構成される畳み込み処理ユニットと、を含む。
【0010】
第3態様では、本開示の実施例は、コンピュータ実行可能な命令が記憶されているコンピュータ可読記憶媒体を提供し、前記コンピュータ実行可能な命令は、上述の実施例にて提供される畳み込みニューラルネットワークの畳み込み処理方法を実行するように構成される。
【0011】
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体を提供し、前記方法は、前記畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するステップと、各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するステップと、前記重み値のアドレスに応じて、対応する処理対象データを取得するステップと、前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するステップと、を含む。このように、重み変換と新しい処理ユニットとの組み合わせにより、重みのスパース特性を十分に発揮することができる。
【図面の簡単な説明】
【0012】
図1】本開示の実施例1にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
図2A】本開示の実施例2にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
図2B】本開示の実施例2にて提供される別の畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
図2C】本開示の実施例2にて提供される別の畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
図3】本開示の実施例3にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
図4】本開示の実施例3にて提供される重みの分類及び再配列の概略フローチャートである。
図5】本開示の実施例3にて提供される元の畳み込みカーネルをサブ畳み込みカーネルに分割した構造の概略図である。
図6】本開示の実施例3にて提供される生成されたインジケータテーブルとマッピングテーブルの概略図である。
図7】本開示の実施例3にて提供される重みの再配列後の重みテーブルエントリ構造の概略図である。
図8】本開示の実施例3にて提供される方式2の重みの再配列後の重みテーブルエントリ構造の概略図である。
図9】本開示の実施例3にて提供される方式3の重みの再配列後の重みテーブルエントリ構造の概略図である。
図10】本開示の実施例3にて提供される方式4の重みの再配列後の重みテーブルエントリ構造の概略図である。
図11】本開示の実施例3にて提供される畳み込みニューラルネットワークの畳み込み処理構造の概略図である。
図12】本開示の実施例3にて提供される別の畳み込みニューラルネットワークの畳み込み処理構造の概略図である。
図13】本開示の実施例3にて提供される別の畳み込みニューラルネットワークの畳み込み処理構造の概略図である。
図14】本開示の実施例4にて提供される畳み込みニューラルネットワークの畳み込み処理装置の構成構造の概略図である。
【発明を実施するための形態】
【0013】
本開示の実施例の目的、技術案及び利点をより明確にするために、以下、本開示の実施例の添付図面を参照しながら、本発明の具体的な技術案について、さらに詳細に説明する。以下の実施例は、本開示を説明するものにすぎず、本開示の範囲を制限するものではない。
【0014】
本開示の実施例では、新しい処理ユニット構造を提供することにより、従来の処理ユニットの乗加算構造に対して、処理ユニットを分類累積ユニットと分類乗算ユニットとに分割し、拡張性がよりよく、計算の早期終了機能、クロックゲーティング機能、及びゼロデータ時の計算中止などの機能をサポートすることができ、重みの変換により、ニューラルネットワーク構造の特性に応じて、適切な変換ポリシーを選択することができ、重みの変換と新しい処理ユニットとの組み合わせにより、重みのスパース特性を十分に発揮することができる。本開示の実施例により、ニューラルネットワークのハードウェアアクセラレータ及びプロセッサは、重みのスパース特性を利用して、計算量を減らし、処理時間を短縮し、効能を向上させる。
【0015】
実施例1
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法を提供し、図1は、本開示の実施例1にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図1に示すように、当該方法は、ステップS101~S104を含む。
【0016】
ステップS101では、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する。
ここで、予め設定されたポリシーに応じて、畳み込みニューラルネットワークにおけるサブ畳み込みカーネルを分類し、分類結果に応じて、重み値を再配列し、再配列後の重み値に対して相応の変換を行う。
【0017】
他の実施例では、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する前記ステップは、前記サブ畳み込みカーネルにおける同じ重み値を1つの類別に分類し、又は、絶対値が同じの重み値を1つの類別に分類し、又は、2の冪乗倍数である重み値を1つの類別に分類し、又は、正の重み値と負の重み値をそれぞれ1つの類別にするステップを含む。
【0018】
ここで、前記サブ畳み込みカーネルにおける同じ重み値を1つの類別に分類することを例とし、本開示の実施例では、サブ畳み込みカーネルにおける同じ重み値のみを1つの類別に分類して、同じ重み値のみを一緒に配列することができる。サブ畳み込みカーネルの列幅、行幅及びチャネル数はそれぞれR、S、Cであると仮定すると、合計256類の重み値があり、関連技術における技術案によれば、R×S×C回の乗加算操作を行う必要があるが、本開示の実施例によると、最大でR×S×C+256回の加算操作及び256回の乗算操作を行うだけでよい。
【0019】
他の実施例では、絶対値が同じの正の重み値と負の重み値との併合、又は2の冪乗倍数の重みの併合などの併合方式により、重みの類別を64類以下にすることができ、又は、正の重みと負の重みとを分けて併合し、正の重みの類別を前に配列し、負の重みの類別を後ろに配列し、再配列後のインジケータテーブル及びマッピングテーブルはグローバルバッファに記憶される。
【0020】
ステップS102では、各重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成する。
ここで、重み値の分類及び再配列の結果に応じて、重み値を相応のインジケータテーブル及びマッピングテーブルに変換することができ、インジケータテーブルはデータに対して相応の操作を行うインジケータを記憶するためのものであり、マッピングテーブルは重み値のアドレスを特徴付けるためのものである。
【0021】
本開示の実施例では、インジケータテーブルは、全ての類別の重み値に対応する相応の操作のインジケータを記憶するためのものであり、各インジケータは1類の重み値に対応し、各インジケータに対応するマッピングテーブルには、この類の重み値における全ての重み値に対応するアドレスが記憶されており、ここで、インジケータに対応する操作は、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含み、マッピングテーブルは、重み値のアドレス、即ち重み値に対応する行番号、列番号及びチャネル数番号を特徴付けるパラメータを含む。
【0022】
ステップS103では、重み値のアドレスに応じて、対応する処理対象データを取得する。
ここで、重み値のアドレスは処理対象データアドレスと対応関係が付けられ、当該対応関係に応じて、対応する処理対象データを取得することができる。処理対象データは、画像、車両運転データ、言語データなどであってもよい。
【0023】
ステップS104では、インジケータに応じて、処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する。
ここで、インジケータは、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含むため、インジケータにおける操作に応じて、処理対象データに対して相応の処理を行うことができ、例えば、シフト又は加算/減算操作を行う。
【0024】
本開示の実施例では、重みは、重み変換によって事前に非ゼロ圧縮されたため、畳み込み操作の時間はゼロではない重みの数のみに関連するようになり、重み畳み込みカーネルのスパース率を十分に活用して、推定実行時間を大幅に節約する。
【0025】
実施例2
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法を提供し、図2Aは、本開示の実施例2にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図2Aに示すように、当該方法は、ステップS201a~ステップS206aを含む。
【0026】
ステップS201aでは、前記畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも2つのサブ畳み込みカーネルを獲得する。
ここで、コンパイラを使用して重み変換を行うことを例とし、コンパイラにより反復操作を行うことができ、1つのR×S×CH大きさの畳み込みカーネルを複数のR×S×Cのサブ畳み込みカーネル(ここで、Rは畳み込みカーネルの列幅で、Sは畳み込みカーネルの行幅で、Cはサブ畳み込みカーネルのチャネル数であり、当層の畳み込みカーネルのチャネル数はChであると仮定すると、C<=Chである)に分割する。
【0027】
ステップS202aでは、各前記サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、前記サブ畳み込みカーネルにおける重み値を獲得する。
【0028】
ステップS203aでは、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する。
ここで、予め設定されたポリシーに応じて、畳み込みニューラルネットワークにおけるサブ畳み込みカーネルを分類し、分類結果に応じて、重み値を再配列し、再配列後の重み値に対して相応の変換を行う。
【0029】
ステップS204aでは、各重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成する。
ここで、重み値の分類及び再配列結果に応じて、重み値を相応のインジケータテーブル及びマッピングテーブルに変換することができ、インジケータテーブル内のインジケータはデータに対する相応の操作を記憶するためのものであり、マッピングテーブルは重み値のアドレスを特徴付けるためのものである。
【0030】
本開示の実施例では、インジケータは、全ての類別の重み値に対応する相応の操作を記憶するためのインジケータを表し、各インジケータは1類の重み値に対応し、各インジケータに対応するマッピングテーブルには、この類の重み値における全ての重み値に対応するアドレスが記憶されており、ここで、インジケータに対応する操作は、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含み、マッピングテーブルは、重み値のアドレス、即ち重み値に対応する行番号、列番号及びチャネル数番号を特徴付けるパラメータを含む。
【0031】
ステップS205aでは、重み値のアドレスに応じて、対応する処理対象データを取得する。
ここで、重み値のアドレスは処理対象データアドレスと対応関係が付けられ、当該対応関係に応じて、対応する処理対象データを取得することができる。
【0032】
ステップS206aでは、インジケータに応じて、処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する。
ここで、インジケータは、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含むため、インジケータにおける操作に応じて、処理対象データに対して相応の処理を行うことができ、例えば、シフト又は加算/減算操作を行う。
【0033】
他の実施例では、前記重み値のアドレスに応じて、対応する処理対象データを取得する前記ステップは、入力された元の処理対象データ集合から、前記サブ畳み込みカーネルと、行幅、列幅及びチャネル数が全部同じの処理対象データ集合を決定するステップと、前記処理対象データ集合内の各処理対象データのアドレスと前記サブ畳み込みカーネル内の相応の重み値のアドレスとの対応関係を確立するステップと、前記対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得するステップと、を含む。
【0034】
図2Bは、本開示の実施例2にて提供される別の畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図2Bに示すように、当該方法は、ステップS201b~ステップS208bを含む。
【0035】
ステップS201bでは、畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも2つのサブ畳み込みカーネルを獲得する。
【0036】
ステップS202bでは、各サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、サブ畳み込みカーネルにおける重み値を獲得する。
【0037】
ステップS203bでは、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する。
【0038】
ステップS204bでは、各重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成する。
【0039】
ステップS205bでは、入力された元の処理対象データ集合から、サブ畳み込みカーネルと、行幅、列幅及びチャネル数がいずれも同じの処理対象データ集合を決定する。
ここで、元の処理対象データ集合は、全ての処理対象データの集合であり、本開示の実施例では、元の処理対象データ集合から相応の処理対象データ集合を取得する必要があり、当該処理対象データ集合の行幅、列幅及びチャネル数はサブ畳み込みカーネルの行幅、列幅及びチャネル数とそれぞれ同じである。
【0040】
ステップS206bでは、処理対象データ集合における各処理対象データのアドレスとサブ畳み込みカーネル内の相応の重み値のアドレスとの対応関係を確立する。
ここで、処理対象データ集合における各処理対象データはサブ畳み込みカーネル内の相応の重み値と1対1に対応する関係であり、サブ畳み込みカーネルにおけるある重み値のアドレスに応じて、相応のある処理対象データのアドレスを取得することができる。
【0041】
ステップS207bでは、対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得する。
ここで、サブ畳み込みカーネルにおけるある重み値のアドレスに応じて、相応のある処理対象データのアドレスを取得することができると、当該アドレスに応じて、相応の処理対象データを決定することができる。
【0042】
ステップS208bでは、インジケータに応じて、処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する。
【0043】
他の実施例では、前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する前記ステップは、前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得するステップと、前記累積和に、対応する重み値を掛けて部分和を獲得するステップと、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得するステップと、を含む。
【0044】
図2Cは、本開示の実施例2にて提供される別の畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図2Cに示すように、当該方法は、ステップS201c~ステップS210cを含む。
【0045】
ステップS201cでは、畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも2つのサブ畳み込みカーネルを獲得する。
【0046】
ステップS202cでは、各サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、サブ畳み込みカーネルにおける重み値を獲得する。
【0047】
ステップS203cでは、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する。
【0048】
ステップS204cでは、各重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成する。
ここで、重み値の分類及び再配列結果に応じて、重み値を相応のインジケータテーブル及びマッピングテーブルに変換することができ、インジケータテーブルはデータに対して相応の操作を行うインジケータを記憶するためのものであり、マッピングテーブルは重み値のアドレスを特徴付けるためのものである。
【0049】
本開示の実施例では、インジケータテーブルは、全ての類別の重み値に対応する相応の操作のインジケータを記憶するためのものであり、各インジケータは1類の重み値に対応し、各インジケータに対応するマッピングテーブルには、この類の重み値における全ての重み値に対応するアドレスが記憶されており、ここで、インジケータに対応する操作は、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含み、マッピングテーブルは、重み値のアドレス、即ち重み値に対応する行番号、列番号及びチャネル数番号を特徴付けるパラメータを含む。
【0050】
ステップS205cでは、入力された元の処理対象データ集合から、サブ畳み込みカーネルと、行幅、列幅及びチャネル数がいずれも同じの処理対象データ集合を決定する。
【0051】
ステップS206cでは、前記処理対象データ集合内の各処理対象データのアドレスと前記サブ畳み込みカーネル内の相応の重み値のアドレスとの対応関係を確立する。
ここで、重み値のアドレスは処理対象データアドレスと対応関係が付けられ、当該対応関係に応じて、対応する処理対象データを取得することができる。
【0052】
ステップS207cでは、対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得する。
【0053】
ステップS208cでは、前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得する。
【0054】
本開示の実施例では、同一のインジケータに対応するマッピングテーブルを読み取る場合、処理ユニットの分類累積ユニットで計算の前処理及び加算/減算操作を行う。
【0055】
同一のインジケータ内のマッピングテーブルを読み取る場合、即ち、同一重みの終了条件に達していない場合、異なる実施ポリシー、即ち重み再配列ポリシーに応じて、処理ユニットの分類累積ユニットで計算の前処理、即ちシフト操作及び加算/減算操作を行い、ここで、シフト量は、インジケータテーブルにおける構成によって決められ、ここで、加減算はインジケータテーブルにおける構成によって決められ、同一のインジケータに対応するマッピングテーブルの読み取りが済んだ後、分類終了フラグを確認し、分類終了フラグが「終了していない」である場合、次のインジケータを読み取り、同一のインジケータ内のマッピングテーブルの読み取りが済んだ後、分類終了フラグを確認し、分類終了フラグが「終了した」である場合、加算/減算の結果、対応する重み値及び分類累積処理ユニットの番号を分類乗加算処理ユニットに送信するとともに、次のインジケータ、即ち次の類別の重み値に対応するインジケータを読み取り、分類累積プロセッサにおける累積値をクリアしてゼロにし、これを、インジケータテーブルにおける分類終了フラグが、全ての類別の重み値に対応する処理対象データの累積操作の完了を示すまで行う。
【0056】
他の実施例では、前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得する前記ステップは、前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データに対して前処理を行うステップと、前処理された全ての処理対象データの累積和を取得するステップと、を含み、ここで、前記処理対象データはゼロではない。
【0057】
ここで、前処理は、シフト操作であってもよく、具体的なシフト値はインジケータのシフト値から取得されるものである。
【0058】
ステップS209cでは、前記累積和に、対応する重み値を掛けて部分和を獲得する。
【0059】
他の実施例では、前記累積和に、対応する重み値を掛けて部分和を獲得する前記ステップは、前記累積和が予め設定されたオフセット値以上であると決定された場合、前記累積和に、対応する重み値を掛けて部分和を獲得するステップを含む。前記累積和が予め設定されたオフセット値未満であると決定すると、畳み込み操作を終了する。
【0060】
ステップS210cでは、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得する。
【0061】
他の実施例では、前記部分和と予め設定されたオフセット値との差分値を決定し、前記部分和と予め設定されたオフセット値との差分値がゼロ以上であると決定された場合、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得する。前記部分和と予め設定されたオフセット値との差分値がゼロ未満であると決定された場合、畳み込み操作を終了する。
【0062】
他の実施例では、クロックゲーティング信号により畳み込み操作の相応の操作を制御することで、重み分類の終了点をイネーブル信号としてクロックゲーティング機能をトリガし、それ以外の時間にはゲーティング機能をオフにしてもよい。
【0063】
本開示の実施例では、重みは、重み変換によって事前に非ゼロ圧縮されたため、畳み込み操作の時間はゼロではない重みの数のみに関連するようになり、重み畳み込みカーネルのスパース率を十分に活用して、推定実行時間を大幅に節約する。それとともに、新しい処理ユニット構造は、拡張性がよりよく、計算の早期終了機能、クロックゲーティング機能、及びゼロデータ時の計算中止などの機能をサポートすることができ、即ち、データのスパース特性を利用して、演算量をさらに減らし、クロックゲーティングにより消費電力を減らすことができる。
【0064】
実施例3
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法を提供し、図3は、本開示の実施例3にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図3に示すように、当該方法は、ステップS301を含む。
【0065】
ステップS301では、重み変換ユニットが重み変換を行う。
ここで、重み変換ユニットは、ソフトウェアコーデック、スクリプト・ファイルなどのツールであってもよいし、手動方式を用いてもよく、畳み込みカーネルに対して分割と再配列を行い、処理ユニットに対するシミュレーションにより、最適な方式で畳み込みカーネルを分割して再配列し、再配列後のインジケータテーブル及びマッピングテーブルはグローバルバッファに記憶される。
【0066】
本開示の実施例では、コンパイラ、スクリプト又は手動方式により、重みを変換する。コンパイラを用いて重み変換を行うことを例とし、コンパイラにより反復操作を行って、1つのR×S×CH大きさの畳み込みカーネルを複数のR×S×Cのサブ畳み込みカーネル(ここで、Rは畳み込みカーネルの列幅で、Sは畳み込みカーネルの行幅で、Cはサブ畳み込みカーネルのチャネル数であり、当層の畳み込みカーネルのチャネル数はChであると仮定すると、C<=Chである)に分割し、各々のサブ畳み込みカーネルにおける固定小数点化後の重み値を再配列し、再配列後の重みをインジケータテーブル及びマッピングテーブルの形式に変換する。
【0067】
図4は、本開示の実施例3にて提供される重みの分類及び再配列の概略フローチャートであり、本開示の実施例では、コンパイラを用いて重み変換を行い、ここで、コンパイラの内部は畳み込みカーネル分割モジュール、再配列ポリシー選択モジュール、サブ畳み込みカーネル再配列モジュール及び再配列性能模擬モジュールに分けられ、図4に示すように、重みの分類及び再配列は、ステップS401~ステップS405を含む。
【0068】
ステップS401では、コンパイラが元の畳み込みカーネルを取得する。
【0069】
ステップS402では、畳み込みカーネル分割モジュールが元の畳み込みカーネルを分割する。
ここで、畳み込みカーネル分割モジュールが元の畳み込みカーネルを分割することにより、サブ畳み込みカーネルが形成される。図5は、本開示の実施例3にて提供される元の畳み込みカーネルをサブ畳み込みカーネルに分割した構造の概略図であり、図5に、元の畳み込みカーネルを分割して得た複数のサブ畳み込みカーネル及び各サブ畳み込みカーネルの行幅501、列幅502及びチャネル数503を示した。
【0070】
ステップS403では、再配列ポリシー選択モジュールはサブ畳み込みカーネルに対応する再配列ポリシーを選択する。
【0071】
ステップS404では、サブ畳み込みカーネル再配列モジュールは再配列ポリシーに応じてサブ畳み込みカーネルを再配列する。
【0072】
ステップS405では、再配列性能模擬モジュールは再配列結果に応じて対応するインジケータテーブル及びマッピングテーブルを生成する。
【0073】
図6は、本開示の実施例3にて提供される生成されたインジケータテーブルとマッピングテーブルの概略図であり、図6に示すように、インジケータテーブル601とマッピングテーブル602とは、対応する関連関係がある。
【0074】
図7は、本開示の実施例3にて提供される重みの再配列後の重みテーブルエントリ構造の概略図であり、図7に示すように、インジケータテーブル71は、重み値701、終了アドレス702、シフト値703、加減算タイプ704、拡張情報705及び分類指示706を記憶するためのものであり、マッピングテーブル72は、重みの行、列及びチャネル数を特徴付けるアドレッシング方式707を表す。
【0075】
符号化方式はL(iwx、jwx、kwx)で表されてもよく、L(iwx、jwx、kwx)は、行、列及びチャネル数に対するアドレッシング方式を表し、ここで、iwxは重みwxに対応する行番号を表し、値の範囲は(0、-1)であり、jwxは重みwxに対応する列番号を表し、値の範囲は(0、R-1)であり、kwxは重みwxに対応するチャネル番号を表し、値の範囲は(0、-1)であり、Rはサブ畳み込みカーネルの列幅である。
【0076】
他の実施例では、さらに、コンパイルスクリプト又は手動操作などにより重みを変換してもよい。
【0077】
本開示の実施例では、異なる再配列ポリシーを選択することができ、各再配列ポリシーは1つの再配列モードに対応し、8Bitによる固定小数点化後の重みを例としてこれらの再配列ポリシーを説明する。
【0078】
方式1:ポリシーなしに再配列を行い、早期中止機能を有効にしない。
本開示の実施例では、同じ重みを一緒に再配列し、256個の重みがある場合、当該重みに対応する畳み込みカーネルの列幅はRで、行幅はSで、チャネル数はCであると仮定すると、本来R×S×C回の乗加算操作が必要であるが、本開示の実施例によると、最大でR×S×C+256回の加算操作と256回の乗算操作のみが必要となるように変換することができる。
【0079】
方式2:ポリシーなしに再配列を行い、早期中止機能を有効にする。
本開示の実施例では、同じ重みのみを一緒に再配列し、先に正の重みを配列し、後で負の重みを配列する。256個の重みがある場合、当該重みに対応する畳み込みカーネルは、列幅がRで、行幅がSで、チャネル数がCであり、本来R×S×C回の乗加算操作が必要であるが、本開示の実施例によると、変換後に、最大でR×S×C+256回の加算操作と256回の乗算操作のみが必要となり、それとともに、畳み込み計算の累積和がオフセット未満である場合、畳み込み演算を早期中止することができる。
【0080】
図8は、本開示の実施例3にて提供される方式2の重みの再配列後の重みテーブルエントリ構造の概略図であり、図8に示すように、インジケータテーブル81における各行は、1つの重み分類に対応するインジケータを表し、第1行は、重み値は1、終了アドレスは重み1の終了アドレス、シフトなし、加算の実行、拡張情報、重み及び分類終了指示を含み、第2行は、重み値は2、終了アドレスが重み2の終了アドレス、シフトなし、加算の実行、拡張情報、重み及び分類終了指示を含み、第3行は、重み値は3、終了アドレスは重み3の終了アドレス、シフトなし、加算の実行、拡張情報、重み及び分類終了指示を含み、第4行は、重み値は-1、終了アドレスは重み-1の終了アドレス、シフトなし、減算の実行、拡張情報、再配列終了指示を含む。マッピングテーブル82は各インジケータに対応する各類の重みの重み値のアドレスを特徴付ける。
【0081】
方式3:優先に類別を減らして再配列を行い、早期中止機能を有効にしない。
本開示の実施例では、絶対値が同じの正負の重み値を併合する方式、2の冪乗倍数重みを併合する方式などの併合方式により、重みの類別を64類以下に減らし、64類に減らすことを例とし、この場合、畳み込みの早期中止機能を有効にせず、当該重みに対応する畳み込みカーネルは、列幅がRで、行幅がSで、チャネル数がCであると仮定すると、本来R×S×C回の乗加算操作が必要であるが、本開示の実施例によると、変換後に、最大でR×S×C+64回の加算操作と64回の乗算操作のみが必要となる。
【0082】
図9は、本開示の実施例3にて提供される方式3の重みの再配列後の重みテーブルエントリ構造の概略図であり、図9に示すように、インジケータテーブル91における各行は、1つの重み分類に対応するインジケータを表し、第1行は、重み値は1、終了アドレスは重み1の終了アドレス、シフトなし、加算の実行、拡張情報、重み終了指示を含み、第2行は、重み値は-1、終了アドレスは重み-1の終了アドレス、シフトなし、減算の実行、拡張情報、重み終了指示を含み、第3行は、重み値は2で、終了アドレスは重み2の終了アドレス、1だけシフト、加算の実行、拡張情報、重み終了指示を含み、第4行は、重み値は-64、終了アドレスは重み-64の終了アドレス、6だけシフト、減算の実行、拡張情報、重み終了指示を含み、第5行は、重み値は3、終了アドレスは重み3の終了アドレス、シフトなし、加算の実行、拡張情報、重み終了指示を含み、第6行は、重み値はn-1で、終了アドレスは重みn-1の終了アドレス、xだけシフト、加算/減算の実行、拡張情報、再配列終了指示を含む。
【0083】
マッピングテーブル92は、各インジケータに対応する各類の重みの重み値のアドレスを特徴付ける。
【0084】
方式4:早期中止機能を有効にし、類別をできるだけ併合する。
本開示の実施例では、正の重みと負の重みとを分けて併合し、正の重みの類別を前に配列し、負の重みの類別を後ろに配列して、2つの機能を両立できるという特徴があるが、本方式で重み再配列を行う乗算の使用率は、方式3での乗算の使用率より高い。
【0085】
図10は、本開示の実施例3にて提供される方式4の重みの再配列後の重みテーブルエントリ構造の概略図であり、図10に示すように、インジケータテーブル1001おける各行は、1つの重み分類に対応するインジケータを表し、第1行は、重み値は1、終了アドレスは重み1の終了アドレス、シフトなし、加算の実行、拡張情報、重み終了指示を含み、第2行は、重み値は2、終了アドレスは重み2の終了アドレス、1だけシフト、加算の実行、拡張情報、重み終了指示を含み、第3行は、重み値は64、終了アドレスは重み64の終了アドレス、6だけシフト、加算の実行、拡張情報、重み及び分類終了指示を含み、第4行は、重み値は3、終了アドレスは重み3の終了アドレス、シフトなし、加算の実行、拡張情報、重み終了指示を含み、第5行は、重み値は127、終了アドレスは重み127の終了アドレス、シフトなし、加算の実行、拡張情報、重み及び分類終了指示を含み、第6行は、重み値は-1、終了アドレスは重み-1の終了アドレス、シフトなし、減算操作の実行、拡張情報、重み終了指示を含み、第7行は、重み値は-128、終了アドレスは重み-128の終了アドレス、シフトなし、減算の実行、拡張情報、再配列終了指示を含む。
【0086】
マッピングテーブル1002は各インジケータ対応する各類の重みの重み値のアドレスを特徴付ける。
【0087】
ステップS302では、コントローラが命令解析及びパラメータコンフィグレーションを行う。
ここで、図11は、本開示の実施例3にて提供される畳み込みニューラルネットワークの畳み込み処理構造の概略図であり、図11に示すように、制御ユニット1101のコントローラが命令1102を解析した後、処理ユニット1103に対してパラメータコンフィグレーションを行い、バッファユニット1104のグローバルバッファ内のデータ1105から入力するデータブロックを選択し、処理ユニットに対して機能パラメータコンフィグレーションを行う。
【0088】
ステップS303では、データブロック及び重みインジケータを導入する。
ここで、1つの処理ユニットの1回のスケジューリング実行について、グローバルバッファから分割後のサブ畳み込みカーネルと同じ大きさ、即ち列幅がRで、行幅がSで、チャネル数がC(R×S×C)であるデータを読み取って、データバッファ(ここで、Rはサブ畳み込みカーネルの列幅で、Sはサブ畳み込みカーネルの行幅で、Cはサブ畳み込みカーネルのチャネル数である)に格納する。グローバルバッファから、処理する必要のあるサブ畳み込みカーネルの重みインジケータをインジケータバッファに読み込む。
【0089】
ステップS304、データストリームを読み取る。
ここで、重み再配列後のマッピングテーブル内容を順番に読み取り、マッピングテーブル内容をアドレス又は選択条件として、プロセッサの内部バッファからデータを読み取る。本開示の実施例では、処理ユニットのコントローラは、1番目のインジケータをコントローラに読み込み、その後、重みの再配列後のマッピングテーブルの内容を順番に読み取り、マッピングテーブルの内容をアドレス/選択条件として、データバッファからデータを読み取る。
【0090】
ステップS305では、分類累積ユニットが分類累積操作を行う。
ここで、分類累積ユニットは、主に、ある重み分類の累積操作、を完了するとともに、ゼロデータスキップ操作をサポートする。
【0091】
本開示の実施例では、同一のインジケータテーブルエントリ内に対応するマッピングテーブルエントリを読み取る場合、処理ユニットの分類累積ユニットで計算の前処理及び加算/減算操作を行う。図12は、本開示の実施例3にて提供される別の畳み込みニューラルネットワークの畳み込み処理構造の概略図であり、図12に示すように、バッファユニットは、グローバルバッファ1201、重みインジケータバッファ1202、重みマッピングテーブルバッファ1203及びデータバッファ1204を含み、処理ユニット122は、分類累積ユニット1205と、分類乗算と部分和累積ユニット1206とを含み、制御ユニット123は、各ユニットを制御する制御命令を受信と送信するように設定される。
【0092】
他の実施例では、図13は、本開示の実施例3にて提供される別の畳み込みニューラルネットワークの畳み込み処理構造の概略図であり、図13に示すように、処理ユニット13は、分類累積ユニット131と、分類乗算と部分和累積ユニット132とを含み、ここで、分類累積ユニット131は、コントローラモジュール1301、分類累積和モジュール1302、前処理モジュール1303、ゼロ判定中止モジュール1304、及び加算/減算操作モジュール1305を含み、分類乗算と部分和累積ユニット132は、判断中止モジュール1306、乗算モジュール1307、部分和モジュール1308、及び加算モジュール1309を含む。
【0093】
処理ユニット13の分類累積ユニット131が計算の前処理及び加算/減算操作を行う。異なる実施ポリシーによって、即ち、重み再配列ポリシーによって処理ユニット13の分類累積ユニット131で計算の前処理、即ちシフト操作と加算/減算操作を行い、ここで、シフト量はインジケータテーブルにおける構成によって決められ、加算/減算操作は、インジケータテーブルにおける構成によって決められる。入力されたデータが0である場合、累積/減算動作の処理を一時停止する、又は中止する。分類乗算と部分和累積ユニット132は、分類累積ユニット131によって出力された累積和と、対応する重みとの乗算操作、及び乗算結果を部分和に累積する動作を完了するように設定される。そして、クロックゲーティング機能と早期中止機能をサポートする。
【0094】
ステップS306では、分類累積ユニットは分類累積が終了したか否かを判断する。
ここで、同一のインジケータテーブルエントリに対応するマッピングテーブルエントリの読み取りが完了すると、分類終了フラグを確認し、分類終了フラグが「終了していない」である場合、次のインジケータテーブルエントリを読み取り、ステップS305を繰り返す。
【0095】
ステップS307では、分類切り替え制御を行う。
ここで、同一のインジケータ内のマッピングテーブルエントリの読み取が完了すると、分類終了フラグを確認し、分類終了フラグが「終了した」である場合、累積/減算の結果と、対応する重み値及び分類累積処理ユニットの番号とを分類乗加算処理ユニットに送り、同時に、次のインジケータテーブルエントリを読み取って、分類累積プロセッサ内の累積値をクリアしてゼロにし、ステップS305の操作を再開始し、これを、インジケータテーブルエントリにおける分類終了フラグが、畳み込み操作が全部完了したことを示すまで行う。
【0096】
ステップS308では、分類乗算と部分和累積ユニットが分類乗算を行う。
ここで、分類乗算と部分和累積ユニットは、主に、分類累積ユニットによって出力された累積和と、対応する重みとの乗算操作、及び乗算結果を部分和に累積する動作を完了する。そして、クロックゲーティング機能及び早期中止機能をサポートする。
【0097】
本開示の実施例では、分類乗加算処理ユニットは、入力された重み及びデータの乗算操作を完了し、かつ、乗算の結果を部分和に累積する。構成において、演算を早期中止することができる否かの判断を選択した場合、現在の部分和の値とオフセット値との差分値が0未満であるか否かを判断し、ゼロ未満であると、処理ユニットのコントローラにフィードバックして、処理を中止する。
【0098】
クロックゲーティングは、再配列後の重み分類の終了点をイネーブル信号とし、それ以外の時間にはクロックをオフにしてもよい。ステップS301にて提供された異なる実施案により、分類乗算ユニットが演算を早期中止できるか否かを構成し、早期停止機能がイネーブルされる場合、現在の部分和の値とオフセット値との差分値が0未満であるか否かを判断し、ゼロ未満であると、処理ユニットのコントローラにフィードバックして、処理を中止する。機能がイネーブルされない場合、部分値とオフセット値との判断を行わない。
【0099】
本開示の実施例では、スパース畳み込みニューラルネットワークを実現する装置は、重み変換ユニット、バッファユニット、制御ユニット及び処理ユニットを含む。
【0100】
重み変換ユニットは、ソフトウェアコーデック、スクリプト・ファイルなどのツールであってもよいし、手動方式を用いてもよく、畳み込みカーネルに対する分割と再配列を担当し、処理ユニットに対するシミュレーションにより、最適な方式で畳み込みカーネルを分割して再配列し、再配列後のインジケータテーブル及びマッピングテーブルはグローバルバッファに記憶される。
【0101】
処理ユニットは、分類累積ユニットと分類乗算と部分和累積ユニットとの2つの部分に分けられる。
【0102】
分類累積ユニットは、ある重み分類の累積操作を完了するとともに、ゼロデータスキップ操作をサポートするように設定される。
【0103】
分類乗算と部分和累積ユニットは、分類累積ユニットによって出力された部分和と、対応する重みとの乗算操作、及び乗算結果を部分和に累積する動作を完了するように設定される。そして、クロックゲーティング機能及び早期中止機能をサポートする。
【0104】
バッファユニットは、1段構造を用いても、多段バッファ構造を用いてもよい。2段バッファを例とすると、
グローバルバッファはデータバッファ、重みインジケータバッファ及び重みマッピングバッファに1回のスケジューリング、即ちサブ畳み込みカーネルの畳み込み操作に必要なデータ、重みインジケータテーブル及び重みマッピングテーブルを提供する。
【0105】
重みマッピングバッファは、重みマッピングテーブル値をデータバッファに送信し、データバッファのアドレスとして、対応する位置のデータを読み取って、分類累積ユニットに送信する。
【0106】
重みインジケータバッファは、インジケータを分類累積ユニットに送信して、分類累積ユニットの内部操作を制御し、分類累積ユニットの演算結果を分類乗算ユニットに送信して計算し続ける必要があるか否かを制御する。
【0107】
本開示の実施例では、重み変換と新しい処理ユニットとの組み合わせによって、重みは、事前に非ゼロ圧縮されたため、畳み込み操作の時間はゼロではない重みの数のみに関連するようになり、重み畳み込みカーネルのスパース率を十分に活用して、推定実行時間を大幅に節約する。それとともに、新しい処理ユニット構造は、拡張性がよりよく、計算の早期終了機能、クロックゲーティング機能、及びゼロデータ時の計算中止などの機能をサポートすることができ、即ち、データのスパース特性を利用して、演算量をさらに減らし、クロックゲーティングにより消費電力を減らすことができる。
【0108】
実施例4
前記の実施例に基づいて、本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理装置を提供し、当該装置に含まれる各ユニット、及び各ユニットに含まれる各サブユニットは、いずれもコンピュータ機器のプロセッサによって実装されることができ、勿論、論理回路によって実装されることもでき、実施プロセスにおいて、プロセッサは、中央処理装置(CPU)、マイクロプロセッサ(MPU)、デジタル信号プロセッサ(DSP)或いはフィールドプログラマブルゲートアレイ(FPGA)などであってもよく、ここで、コンピュータ機器は、携帯電話、ノートパソコン、デスクトップ、サーバなどであってもよい。
【0109】
図14は、本開示の実施例4にて提供される畳み込みニューラルネットワークの畳み込み処理装置の構成構造の概略図であり、図14に示すように、前記装置は、
前記畳み込みニューラルネットワークのサブ畳み込みカーネルの重み値を分類するように構成される分類ユニット1401と、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するように構成される生成ユニット1402と、
前記重み値のアドレスに応じて、対応する処理対象データを取得するように構成される取得ユニット1403と、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するように構成される畳み込み処理ユニット1404と、を含む。
【0110】
他の実施例では、前記装置は、さらに、
前記畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも2つのサブ畳み込みカーネルを獲得するように構成される分割ユニットと、
各前記サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、前記サブ畳み込みカーネルにおける重み値を獲得するように構成される固定小数点化ユニットと、を含む。
【0111】
他の実施例では、前記取得ユニットは、さらに、
入力された元の処理対象データ集合から、前記サブ畳み込みカーネルと列幅、行幅及びチャネル数がいずれも同じの処理対象データ集合を決定し、
前記処理対象データ集合内の各処理対象データのアドレスと前記サブ畳み込みカーネル内の相応の重み値のアドレスとの対応関係を確立し、
対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得するように構成される。
【0112】
他の実施例では、前記畳み込み処理ユニットは、さらに、
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得し、
前記累積和に、対応する重み値を掛けて部分和を取得し、
全ての類別の重み値に、対応する全ての部分和を加算して畳み込み結果を獲得するように構成される。
【0113】
他の実施例では、前記畳み込み処理ユニットは、さらに、
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データに対して前処理を行い、前処理された全ての処理対象データの累積和を取得するように構成され、ここで、前記処理対象データはゼロではない。
【0114】
他の実施例では、前記畳み込み処理ユニットは、さらに、
前記累積和が予め設定されたオフセット値以上であると決定された場合、前記累積和に、対応する重み値を掛けて部分和を獲得するように構成される。
【0115】
他の実施例では、前記畳み込み処理ユニットは、さらに、
前記部分和と予め設定されたオフセット値との差分値を決定し、
前記部分和と予め設定されたオフセット値との差分値がゼロ以上であると決定した場合、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得するように構成される。
【0116】
他の実施例では、分類ユニットは、さらに、
前記サブ畳み込みカーネルにおける同じ重み値を1つの類別に分類し、又は、
絶対値が同じの重み値を1つの類別に分類し、又は、
2の冪乗倍数である重み値を1つの類別に分類し、又は、
正の重み値と負の重み値とをそれぞれ1つの類別にするように構成される。
【0117】
なお、本開示の実施例では、上記畳み込みニューラルネットワークの畳み込み処理方法は、ソフトウェア機能ユニットの形態で実装され、かつ、独立の製品として販売又は使用される場合、コンピュータ読み取可能な記憶媒体に記憶されてもよい。このような理解に基づいて、本開示の実施例の技術案の本質、言い換えれば従来の技術にとって貢献がある部分は、ソフトウェア製品の形態で具現化されることができ、当該コンピュータソフトウェア製品は、記憶媒体に格納され、コンピュータ機器に本開示の各実施例に記載の装置の全部又は一部を実行させるようにするいくつかの命令を含む。
【0118】
前記記憶媒体は、USBフラッシュメモリ、モバイルハードディスク、読み取り専用メモリ(Read Only Memory、ROM)、磁気ディスク又は光ディスクなど、プロクラムコードを記憶できる様々な媒体を含む。このように、本開示の実施例は、ハードウェアとソフトウェアの特定の組み合わせに限定されない。
【0119】
これに対して、本開示の実施例は、コンピュータプロクラムが記憶されているコンピュータ可読記憶媒体を提供し、当該コンピュータプロクラムがプロセッサによって実行されると、上記のいずれか1つの実施例にて提供される畳み込みニューラルネットワークの畳み込み処理方法のステップが実施される。
【0120】
これに対して、本開示の実施例は、メモリ及びプロセッサを含むコンピュータ機器を提供し、前記メモリには、プロセッサにより実行可能なコンピュータプロクラムが記憶されており、前記プロセッサが前記プロクラムを実行すると、上記のいずれか1つの実施例にて提供される畳み込みニューラルネットワークの畳み込み処理方法のステップが実施される。
【0121】
本開示の装置の実施例に対する説明は、上記装置の実施例の説明と類似で、装置実施例と同様な有益な効果を有する。本開示の装置の実施例に開示されていない技術の詳細は、本開示の装置の実施例に対する説明を参照してください。
【0122】
ここで、以上の記憶媒体及び機器の実施例に対する説明は、上記装置の実施例の説明と類似で、装置の実施例と同様な有益効果を有することに留意されたい。本開示の記憶媒体及び機器の実施例に開示されていない技術の詳細は、本開示の装置の実施例に対する説明を参照してください。
【0123】
勿論、本開示の実施例の装置は、他の類似なプロトコルインタラクション実施事例を有してもよく、当業者は、本開示の精神及び本質から逸脱しない限り、本開示の実施例に対して様々な相応の変更及び変形を行うことができるが、これらの相応の変更及び変形は、本開示の装置の特許請求の保護範囲に属するべきである。
【0124】
当業者が理解するべきことは、本開示の実施例は、装置、システム、又はコンピュータプロクラム製品として提供されることができる。したがって、本開示は、ハードウェア実施例、ソフトウェア実施例、又はソフトウェアとハードウェアの組み合わせ態様の実施例の形態を取り得る。そして、本開示は、コンピュータ使用可能なプロクラムコードを内部に含む1つ又は複数のコンピュータ使用可能な記憶媒体(磁気ディスクメモリ及び光学メモリなどを含むが、これらに限定されない)で実施されるコンピュータプロクラム製品の形態を取り得る。
【0125】
本開示は、本開示の実施例による装置、機器(システム)、及びコンピュータプロクラム製品のフローチャート及び/又はブロック図を参照しながら説明されたものである。コンピュータプロクラム命令によって、フローチャート及び/又はブロック図における各フロー及び/又はブロック、並びにフローチャート及び/又はブロック図におけるフロー及び/又はブロックの組み合わせが実施され得ることを理解すべきである。機器を生成するために、これらのコンピュータプロクラム命令を汎用コンピュータ、専用コンピュータ、組み込み式プロセッサ又は他のプログラム可能データ処理機器のプロセッサに提供することができ、それにより、コンピュータ又は他のプログラム可能データ処理機器のプロセッサによって実行される命令によって、フローチャートの1つのフロー又は複数のフロー及び/又はブロック図の1つのブロック又は複数のブロック内で指定された機能を実装するための機器が生成される。
【0126】
これらのコンピュータプロクラム命令は、コンピュータ又は他のプログラム可能データ処理機器が特定の方式で動作するように導くことができるコンピュータ可読メモリに記憶されてもよく、それにより、当該コンピュータ可読メモリに記憶された命令によって、命令機器を含む製品が生成され、当該命令機器は、フローチャートの1つのフロー又は複数のフロー及び/又はブロック図の1つのブロック又は複数のブロックで指定された機能を実現する。
【0127】
これらのコンピュータプロクラム命令は、コンピュータ又は他のプログラム可能データ処理機器にロードされてもよく、それにより、コンピュータ又は他のプログラム可能機器上で一連の操作ステップを実行してコンピュータによって実現される処理が生成されるため、コンピュータ又は他のプログラム可能機器上で実行される命令は、フローチャートの1つのフロー又は複数のフロー及び/又はブロック図の1つのブロック又は複数のブロックで指定された機能を実施するためのステップを提供する。
【0128】
明細書全体にわたって言及された「1つの実施例」又は「一実施例」は、実施例に関連する特定の特徴、構造又は特性が本開示の少なくとも1つの実施例に含まれることを意味することを理解すべきである。したがって、明細書全体の様々な箇所に現れた「1つの実施例では」又は「一実施例では」という表現は、必ずしも同じ実施例を示すとは限らない。また、これらの特定の特徴、構造又は特性は、任意の適切な方式で1つ又は複数の実施例に組み込まれてもよい。本開示の各実施例では、上記各プロセス番号の大きさは実行手順を意味するものではなく、各プロセスの実行手順は、その機能及び内部ロジックによって決定されるべきであり、本開示の実施例の実施プロセスに対する如何なる限定も構成しないことを理解されたい。上記本開示の実施例の番号は、説明のためのものにすぎず、実施例の優劣を表すものではない。
【0129】
なお、本明細書において、用語「含む」、「備える」又は他のいずれかの他の変形は、非排他的に含むことを意図しており、それにより一連の要素を含むプロセス、装置、物品又は装置は、それらの要素を含むだけでなく、明確に羅列していない他の要素も含み、又は、このようなプロセス、装置、物品又は装置に固有の要素も含む。より多くの制限がない場合、「……を含む」により限定される要素は、当該要素を含むプロセス、装置、物品又は装置に別の同じ要素が存在することを除外しない。
【0130】
本願にて提供されるいくつかの実施例において、開示された機器及び装置は、他の方式で実装されることもできることに留意されたい。上記のとおりに説明された機器の実施例は、例示的なものにすぎず、例えば、前記ユニットの分割は、ロジック機能の分割にすぎず、実際に実施される際に別の分割方式で分割することも可能であり、例えば、複数のユニット又はコンポーネントを組み合わせてもよいし、別のシステムに集積してもよいし、一部の特徴を反映しないか又は実行しなくてもよい。また、図示又は検討された構成要素間の結合、又は直接結合、又は通信可能な接続は、一部のインタフェース、機器又はユニットを介して間接的に結合するか、又は通信可能に接続され、電気的形態であってもよいし、機械的形態又は他の形態であってもよい。
【0131】
上記の分離されている部品として説明したユニットは、物理的に分離されたものであってもよいし、なくてもよく、ユニットとして表示された部品は、物理的なユニットであってもよいし、なくてもよく、即ち、同一の場所に位置しても、複数のネットワークユニットに分散されてもよい。実際の必要に応じて、そのうちのユニットの一部又は全部を選択して本実施例の方案の目的を達成することができる。
【0132】
また、本開示の各実施例における各機能ユニットは、全部1つの処理ユニットに集積されてもよいし、それぞれ1つのユニットとして使用されてもよく、2つ以上のユニットとして1つのユニットに集積されてもよい。上記集積されたユニットは、ハードウェア形態で実装されてもよいし、ハードウェアプラスソフトウェア機能ユニットの形態で実装されてもよい。
【0133】
当業者であれば、上記装置の実施例のステップの全部又は一部は、プロクラム命令に関連するハードウェアによって完了されてもよく、前記プロクラムはコンピュータ読み取可能な記憶媒体に記憶されることができ、当該プロクラムが実行されると、上記装置の実施例を含むステップが実行され、前記記憶媒体は、リムーバブルストレージデバイス、読み取り専用メモリ(Read Only Memory、ROM)、磁気ディスク又は光ディスクなどの様々なプロクラムコードを記憶できる媒体を含む。
【0134】
又は、本開示の上記集積されたユニットは、ソフトウェア機能ユニット形態で実装されるとともに、独立の製品として販売又は使用される場合、コンピュータ読み取可能な記憶媒体に記憶されてもよい。このような理解を踏まえ、本開示の実施例の技術案の本質、言い換えれば従来技術にとって貢献がある部分は、ソフトウェア製品形態で具現化されることができ、当該コンピュータソフトウェア製品は、記憶媒体に格納され、サーバに本開示の各実施例に記載の装置の全部又は一部を実行させるためのいくつかの命令を含む。前記記憶媒体は、リムーバブルストレージデバイス、ROM、磁気ディスク又は光ディスクなどの様々なプロクラムコードを記憶できる媒体を含む。
【0135】
以上は、本開示の実施形態にすぎず、本開示の保護範囲はこれらに限定されない。当御者であれば、本開示に開示された技術範囲内で容易に想到し得る変更、置換えなどは、いずれも本開示の保護範囲に含まれるものとする。したがって、本開示の保護範囲は前記特許請求の範囲の内容に準拠すべきである。
【産業上の利用可能性】
【0136】
以上のように、本発明の実施例にて提供される畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体は、重み変換と新しい処理ユニットとの組み合わせにより、重みのスパース特性を十分に発揮することができるという有益な効果を有する。
図1
図2A
図2B
図2C
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14