(57)【要約】  本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体を開示し、ここで、前記方法は、前記畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するステップと、各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するステップと、前記重み値のアドレスに応じて、対応する処理対象データを取得するステップと、前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するステップと、を含む。
2022502747.tif 000002
【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するステップと、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するステップと、
前記重み値のアドレスに応じて、対応する処理対象データを取得するステップと、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するステップと、を含む、
畳み込みニューラルネットワークの畳み込み処理方法。
【請求項２】
前記畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも２つのサブ畳み込みカーネルを獲得するステップと、
各前記サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、前記サブ畳み込みカーネルにおける重み値を獲得するステップと、をさらに含む、
請求項１に記載の方法。
【請求項３】
前記重み値のアドレスに応じて、対応する処理対象データを取得する前記ステップは、
入力された元の処理対象データ集合から、前記サブ畳み込みカーネルと列幅、行幅及びチャネル数がいずれも同じの処理対象データ集合を決定するステップと、
前記処理対象データ集合内の各処理対象データのアドレスと前記サブ畳み込みカーネル内の相応の重み値のアドレスとの間の対応関係を確立するステップと、
前記対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得するステップと、を含む、
請求項１又は請求項２に記載の方法。
【請求項４】
前記インジケータに応じて、、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する前記ステップは、
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得するステップと、
前記累積和に、対応する重み値を掛けて部分和を獲得するステップと、
全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得するステップと、を含む、
請求項３に記載の方法。
【請求項５】
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得する前記ステップは、
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データに対して前処理を行うステップと、前処理された全ての処理対象データの累積和を取得するステップと、を含み、ここで、前記処理対象データはゼロではない、
請求項４に記載の方法。
【請求項６】
前記累積和に、対応する重み値を掛けて部分和を獲得する前記ステップは、
前記累積和が予め設定されたオフセット値以上であると決定された場合、前記累積和に、対応する重み値を掛けて部分和を獲得するステップを含む、
請求項４に記載の方法。
【請求項７】
全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得する前記ステップは、
前記部分和と予め設定されたオフセット値との差分値を決定するステップと、
前記部分和と予め設定されたオフセット値との差分値がゼロ以上であると決定された場合、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得するステップと、を含む、
請求項４に記載の方法。
【請求項８】
畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する前記ステップは、
前記サブ畳み込みカーネルにおける同じ重み値を１つの類別に分類し、又は、
絶対値が同じの重み値を１つの類別に分類し、又は、
２の冪乗倍数である重み値を１つの類別に分類し、又は、
正の重み値と負の重み値をそれぞれ１つの類別にするステップを含む、
請求項１に記載の方法。
【請求項９】
畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するように構成される分類ユニットと、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するように構成される生成ユニットと、
前記重み値のアドレスに応じて、対応する処理対象データを取得するように構成される取得ユニットと、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するように構成される畳み込み処理ユニットと、を含む、
畳み込みニューラルネットワークの畳み込み処理装置。
【請求項１０】
コンピュータ実行可能な命令が記憶されているコンピュータ可読記憶媒体であって、前記コンピュータ実行可能な命令は、請求項１〜８のいずれか１項に記載の畳み込みニューラルネットワークの畳み込み処理方法を実行できるように構成される、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施例は、ニューラルネットワーク深層学習技術に関し、特に、畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体に関するが、これに限定されない。
【背景技術】
【０００２】
関連技術において、人工知能技術は世界的に急速に発展しており、業界では人工知能技術の研究に努力して、著しい成果を上げた。特に、画像の検出と認識及び言語認識などの方向では、人工知能の認識率はすでに人間を超えている。
【０００３】
同時に、ニューラルネットワークの規模も拡大し続け、典型的なニューラルネットワークは、数十層、さらには数百層になるのが普通であり、ニューロン間の接続の数は億単位で数えるようになり、即ち、アルゴリズムの性能指標が向上していくに従って、計算量も増え続き、推定を完了するのに必要な時間も長くなる。
【０００４】
しかし、実際の応用では、このような膨大な演算量において、全ての計算が有効な計算であるとは限らず、アルゴリズムは、固定小数点化又はスパース化され、即ち訓練によりアルゴリズムに対して圧縮、枝刈り又はクラスタなどを行って、現れた重みがゼロの点が実際の実行では計算する必要がない点である。
【０００５】
関連技術に存在する上記の問題については、現在、効果的な解決手段が提案されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体を提供する。
【課題を解決するための手段】
【０００７】
本開示の実施例の技術案は、以下のように実現される。
【０００８】
第１態様では、本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法を提供し、前記方法は、
前記畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するステップと、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するステップと、
前記重み値のアドレスに応じて、対応する処理対象データを取得するステップと、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するステップと、を含む。
【０００９】
第２態様では、本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理装置を提供し、前記装置は、
前記畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するように構成される分類ユニットと、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するように構成される生成ユニットと、
前記重み値のアドレスに応じて、対応する処理対象データを取得するように構成される取得ユニットと、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するように構成される畳み込み処理ユニットと、を含む。
【００１０】
第３態様では、本開示の実施例は、コンピュータ実行可能な命令が記憶されているコンピュータ可読記憶媒体を提供し、前記コンピュータ実行可能な命令は、上述の実施例にて提供される畳み込みニューラルネットワークの畳み込み処理方法を実行するように構成される。
【００１１】
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体を提供し、前記方法は、前記畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類するステップと、各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するステップと、前記重み値のアドレスに応じて、対応する処理対象データを取得するステップと、前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するステップと、を含む。このように、重み変換と新しい処理ユニットとの組み合わせにより、重みのスパース特性を十分に発揮することができる。
【図面の簡単な説明】
【００１２】
【図１】本開示の実施例１にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
【図２Ａ】本開示の実施例２にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
【図２Ｂ】本開示の実施例２にて提供される別の畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
【図２Ｃ】本開示の実施例２にて提供される別の畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
【図３】本開示の実施例３にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートである。
【図４】本開示の実施例３にて提供される重みの分類及び再配列の概略フローチャートである。
【図５】本開示の実施例３にて提供される元の畳み込みカーネルをサブ畳み込みカーネルに分割した構造の概略図である。
【図６】本開示の実施例３にて提供される生成されたインジケータテーブルとマッピングテーブルの概略図である。
【図７】本開示の実施例３にて提供される重みの再配列後の重みテーブルエントリ構造の概略図である。
【図８】本開示の実施例３にて提供される方式２の重みの再配列後の重みテーブルエントリ構造の概略図である。
【図９】本開示の実施例３にて提供される方式３の重みの再配列後の重みテーブルエントリ構造の概略図である。
【図１０】本開示の実施例３にて提供される方式４の重みの再配列後の重みテーブルエントリ構造の概略図である。
【図１１】本開示の実施例３にて提供される畳み込みニューラルネットワークの畳み込み処理構造の概略図である。
【図１２】本開示の実施例３にて提供される別の畳み込みニューラルネットワークの畳み込み処理構造の概略図である。
【図１３】本開示の実施例３にて提供される別の畳み込みニューラルネットワークの畳み込み処理構造の概略図である。
【図１４】本開示の実施例４にて提供される畳み込みニューラルネットワークの畳み込み処理装置の構成構造の概略図である。
【発明を実施するための形態】
【００１３】
本開示の実施例の目的、技術案及び利点をより明確にするために、以下、本開示の実施例の添付図面を参照しながら、本発明の具体的な技術案について、さらに詳細に説明する。以下の実施例は、本開示を説明するものにすぎず、本開示の範囲を制限するものではない。
【００１４】
本開示の実施例では、新しい処理ユニット構造を提供することにより、従来の処理ユニットの乗加算構造に対して、処理ユニットを分類累積ユニットと分類乗算ユニットとに分割し、拡張性がよりよく、計算の早期終了機能、クロックゲーティング機能、及びゼロデータ時の計算中止などの機能をサポートすることができ、重みの変換により、ニューラルネットワーク構造の特性に応じて、適切な変換ポリシーを選択することができ、重みの変換と新しい処理ユニットとの組み合わせにより、重みのスパース特性を十分に発揮することができる。本開示の実施例により、ニューラルネットワークのハードウェアアクセラレータ及びプロセッサは、重みのスパース特性を利用して、計算量を減らし、処理時間を短縮し、効能を向上させる。
【００１５】
実施例１
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法を提供し、図１は、本開示の実施例１にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図１に示すように、当該方法は、ステップＳ１０１〜Ｓ１０４を含む。
【００１６】
ステップＳ１０１では、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する。
ここで、予め設定されたポリシーに応じて、畳み込みニューラルネットワークにおけるサブ畳み込みカーネルを分類し、分類結果に応じて、重み値を再配列し、再配列後の重み値に対して相応の変換を行う。
【００１７】
他の実施例では、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する前記ステップは、前記サブ畳み込みカーネルにおける同じ重み値を１つの類別に分類し、又は、絶対値が同じの重み値を１つの類別に分類し、又は、２の冪乗倍数である重み値を１つの類別に分類し、又は、正の重み値と負の重み値をそれぞれ１つの類別にするステップを含む。
【００１８】
ここで、前記サブ畳み込みカーネルにおける同じ重み値を１つの類別に分類することを例とし、本開示の実施例では、サブ畳み込みカーネルにおける同じ重み値のみを１つの類別に分類して、同じ重み値のみを一緒に配列することができる。サブ畳み込みカーネルの列幅、行幅及びチャネル数はそれぞれＲ、Ｓ、Ｃであると仮定すると、合計２５６類の重み値があり、関連技術における技術案によれば、Ｒ×Ｓ×Ｃ回の乗加算操作を行う必要があるが、本開示の実施例によると、最大でＲ×Ｓ×Ｃ＋２５６回の加算操作及び２５６回の乗算操作を行うだけでよい。
【００１９】
他の実施例では、絶対値が同じの正の重み値と負の重み値との併合、又は２の冪乗倍数の重みの併合などの併合方式により、重みの類別を６４類以下にすることができ、又は、正の重みと負の重みとを分けて併合し、正の重みの類別を前に配列し、負の重みの類別を後ろに配列し、再配列後のインジケータテーブル及びマッピングテーブルはグローバルバッファに記憶される。
【００２０】
ステップＳ１０２では、各重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成する。
ここで、重み値の分類及び再配列の結果に応じて、重み値を相応のインジケータテーブル及びマッピングテーブルに変換することができ、インジケータテーブルはデータに対して相応の操作を行うインジケータを記憶するためのものであり、マッピングテーブルは重み値のアドレスを特徴付けるためのものである。
【００２１】
本開示の実施例では、インジケータテーブルは、全ての類別の重み値に対応する相応の操作のインジケータを記憶するためのものであり、各インジケータは１類の重み値に対応し、各インジケータに対応するマッピングテーブルには、この類の重み値における全ての重み値に対応するアドレスが記憶されており、ここで、インジケータに対応する操作は、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含み、マッピングテーブルは、重み値のアドレス、即ち重み値に対応する行番号、列番号及びチャネル数番号を特徴付けるパラメータを含む。
【００２２】
ステップＳ１０３では、重み値のアドレスに応じて、対応する処理対象データを取得する。
ここで、重み値のアドレスは処理対象データアドレスと対応関係が付けられ、当該対応関係に応じて、対応する処理対象データを取得することができる。処理対象データは、画像、車両運転データ、言語データなどであってもよい。
【００２３】
ステップＳ１０４では、インジケータに応じて、処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する。
ここで、インジケータは、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含むため、インジケータにおける操作に応じて、処理対象データに対して相応の処理を行うことができ、例えば、シフト又は加算／減算操作を行う。
【００２４】
本開示の実施例では、重みは、重み変換によって事前に非ゼロ圧縮されたため、畳み込み操作の時間はゼロではない重みの数のみに関連するようになり、重み畳み込みカーネルのスパース率を十分に活用して、推定実行時間を大幅に節約する。
【００２５】
実施例２
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法を提供し、図２Ａは、本開示の実施例２にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図２Ａに示すように、当該方法は、ステップＳ２０１ａ〜ステップＳ２０６ａを含む。
【００２６】
ステップＳ２０１ａでは、前記畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも２つのサブ畳み込みカーネルを獲得する。
ここで、コンパイラを使用して重み変換を行うことを例とし、コンパイラにより反復操作を行うことができ、１つのＲ×Ｓ×ＣＨ大きさの畳み込みカーネルを複数のＲ×Ｓ×Ｃのサブ畳み込みカーネル（ここで、Ｒは畳み込みカーネルの列幅で、Ｓは畳み込みカーネルの行幅で、Ｃはサブ畳み込みカーネルのチャネル数であり、当層の畳み込みカーネルのチャネル数はＣｈであると仮定すると、Ｃ＜＝Ｃｈである）に分割する。
【００２７】
ステップＳ２０２ａでは、各前記サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、前記サブ畳み込みカーネルにおける重み値を獲得する。
【００２８】
ステップＳ２０３ａでは、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する。
ここで、予め設定されたポリシーに応じて、畳み込みニューラルネットワークにおけるサブ畳み込みカーネルを分類し、分類結果に応じて、重み値を再配列し、再配列後の重み値に対して相応の変換を行う。
【００２９】
ステップＳ２０４ａでは、各重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成する。
ここで、重み値の分類及び再配列結果に応じて、重み値を相応のインジケータテーブル及びマッピングテーブルに変換することができ、インジケータテーブル内のインジケータはデータに対する相応の操作を記憶するためのものであり、マッピングテーブルは重み値のアドレスを特徴付けるためのものである。
【００３０】
本開示の実施例では、インジケータは、全ての類別の重み値に対応する相応の操作を記憶するためのインジケータを表し、各インジケータは１類の重み値に対応し、各インジケータに対応するマッピングテーブルには、この類の重み値における全ての重み値に対応するアドレスが記憶されており、ここで、インジケータに対応する操作は、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含み、マッピングテーブルは、重み値のアドレス、即ち重み値に対応する行番号、列番号及びチャネル数番号を特徴付けるパラメータを含む。
【００３１】
ステップＳ２０５ａでは、重み値のアドレスに応じて、対応する処理対象データを取得する。
ここで、重み値のアドレスは処理対象データアドレスと対応関係が付けられ、当該対応関係に応じて、対応する処理対象データを取得することができる。
【００３２】
ステップＳ２０６ａでは、インジケータに応じて、処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する。
ここで、インジケータは、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含むため、インジケータにおける操作に応じて、処理対象データに対して相応の処理を行うことができ、例えば、シフト又は加算／減算操作を行う。
【００３３】
他の実施例では、前記重み値のアドレスに応じて、対応する処理対象データを取得する前記ステップは、入力された元の処理対象データ集合から、前記サブ畳み込みカーネルと、行幅、列幅及びチャネル数が全部同じの処理対象データ集合を決定するステップと、前記処理対象データ集合内の各処理対象データのアドレスと前記サブ畳み込みカーネル内の相応の重み値のアドレスとの対応関係を確立するステップと、前記対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得するステップと、を含む。
【００３４】
図２Ｂは、本開示の実施例２にて提供される別の畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図２Ｂに示すように、当該方法は、ステップＳ２０１ｂ〜ステップＳ２０８ｂを含む。
【００３５】
ステップＳ２０１ｂでは、畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも２つのサブ畳み込みカーネルを獲得する。
【００３６】
ステップＳ２０２ｂでは、各サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、サブ畳み込みカーネルにおける重み値を獲得する。
【００３７】
ステップＳ２０３ｂでは、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する。
【００３８】
ステップＳ２０４ｂでは、各重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成する。
【００３９】
ステップＳ２０５ｂでは、入力された元の処理対象データ集合から、サブ畳み込みカーネルと、行幅、列幅及びチャネル数がいずれも同じの処理対象データ集合を決定する。
ここで、元の処理対象データ集合は、全ての処理対象データの集合であり、本開示の実施例では、元の処理対象データ集合から相応の処理対象データ集合を取得する必要があり、当該処理対象データ集合の行幅、列幅及びチャネル数はサブ畳み込みカーネルの行幅、列幅及びチャネル数とそれぞれ同じである。
【００４０】
ステップＳ２０６ｂでは、処理対象データ集合における各処理対象データのアドレスとサブ畳み込みカーネル内の相応の重み値のアドレスとの対応関係を確立する。
ここで、処理対象データ集合における各処理対象データはサブ畳み込みカーネル内の相応の重み値と１対１に対応する関係であり、サブ畳み込みカーネルにおけるある重み値のアドレスに応じて、相応のある処理対象データのアドレスを取得することができる。
【００４１】
ステップＳ２０７ｂでは、対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得する。
ここで、サブ畳み込みカーネルにおけるある重み値のアドレスに応じて、相応のある処理対象データのアドレスを取得することができると、当該アドレスに応じて、相応の処理対象データを決定することができる。
【００４２】
ステップＳ２０８ｂでは、インジケータに応じて、処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する。
【００４３】
他の実施例では、前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得する前記ステップは、前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得するステップと、前記累積和に、対応する重み値を掛けて部分和を獲得するステップと、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得するステップと、を含む。
【００４４】
図２Ｃは、本開示の実施例２にて提供される別の畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図２Ｃに示すように、当該方法は、ステップＳ２０１ｃ〜ステップＳ２１０ｃを含む。
【００４５】
ステップＳ２０１ｃでは、畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも２つのサブ畳み込みカーネルを獲得する。
【００４６】
ステップＳ２０２ｃでは、各サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、サブ畳み込みカーネルにおける重み値を獲得する。
【００４７】
ステップＳ２０３ｃでは、畳み込みニューラルネットワークのサブ畳み込みカーネルにおける重み値を分類する。
【００４８】
ステップＳ２０４ｃでは、各重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成する。
ここで、重み値の分類及び再配列結果に応じて、重み値を相応のインジケータテーブル及びマッピングテーブルに変換することができ、インジケータテーブルはデータに対して相応の操作を行うインジケータを記憶するためのものであり、マッピングテーブルは重み値のアドレスを特徴付けるためのものである。
【００４９】
本開示の実施例では、インジケータテーブルは、全ての類別の重み値に対応する相応の操作のインジケータを記憶するためのものであり、各インジケータは１類の重み値に対応し、各インジケータに対応するマッピングテーブルには、この類の重み値における全ての重み値に対応するアドレスが記憶されており、ここで、インジケータに対応する操作は、重み値、終了アドレス、シフト値、加減算タイプ、拡張情報及び分類指示を含み、マッピングテーブルは、重み値のアドレス、即ち重み値に対応する行番号、列番号及びチャネル数番号を特徴付けるパラメータを含む。
【００５０】
ステップＳ２０５ｃでは、入力された元の処理対象データ集合から、サブ畳み込みカーネルと、行幅、列幅及びチャネル数がいずれも同じの処理対象データ集合を決定する。
【００５１】
ステップＳ２０６ｃでは、前記処理対象データ集合内の各処理対象データのアドレスと前記サブ畳み込みカーネル内の相応の重み値のアドレスとの対応関係を確立する。
ここで、重み値のアドレスは処理対象データアドレスと対応関係が付けられ、当該対応関係に応じて、対応する処理対象データを取得することができる。
【００５２】
ステップＳ２０７ｃでは、対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得する。
【００５３】
ステップＳ２０８ｃでは、前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得する。
【００５４】
本開示の実施例では、同一のインジケータに対応するマッピングテーブルを読み取る場合、処理ユニットの分類累積ユニットで計算の前処理及び加算／減算操作を行う。
【００５５】
同一のインジケータ内のマッピングテーブルを読み取る場合、即ち、同一重みの終了条件に達していない場合、異なる実施ポリシー、即ち重み再配列ポリシーに応じて、処理ユニットの分類累積ユニットで計算の前処理、即ちシフト操作及び加算／減算操作を行い、ここで、シフト量は、インジケータテーブルにおける構成によって決められ、ここで、加減算はインジケータテーブルにおける構成によって決められ、同一のインジケータに対応するマッピングテーブルの読み取りが済んだ後、分類終了フラグを確認し、分類終了フラグが「終了していない」である場合、次のインジケータを読み取り、同一のインジケータ内のマッピングテーブルの読み取りが済んだ後、分類終了フラグを確認し、分類終了フラグが「終了した」である場合、加算／減算の結果、対応する重み値及び分類累積処理ユニットの番号を分類乗加算処理ユニットに送信するとともに、次のインジケータ、即ち次の類別の重み値に対応するインジケータを読み取り、分類累積プロセッサにおける累積値をクリアしてゼロにし、これを、インジケータテーブルにおける分類終了フラグが、全ての類別の重み値に対応する処理対象データの累積操作の完了を示すまで行う。
【００５６】
他の実施例では、前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得する前記ステップは、前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データに対して前処理を行うステップと、前処理された全ての処理対象データの累積和を取得するステップと、を含み、ここで、前記処理対象データはゼロではない。
【００５７】
ここで、前処理は、シフト操作であってもよく、具体的なシフト値はインジケータのシフト値から取得されるものである。
【００５８】
ステップＳ２０９ｃでは、前記累積和に、対応する重み値を掛けて部分和を獲得する。
【００５９】
他の実施例では、前記累積和に、対応する重み値を掛けて部分和を獲得する前記ステップは、前記累積和が予め設定されたオフセット値以上であると決定された場合、前記累積和に、対応する重み値を掛けて部分和を獲得するステップを含む。前記累積和が予め設定されたオフセット値未満であると決定すると、畳み込み操作を終了する。
【００６０】
ステップＳ２１０ｃでは、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得する。
【００６１】
他の実施例では、前記部分和と予め設定されたオフセット値との差分値を決定し、前記部分和と予め設定されたオフセット値との差分値がゼロ以上であると決定された場合、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得する。前記部分和と予め設定されたオフセット値との差分値がゼロ未満であると決定された場合、畳み込み操作を終了する。
【００６２】
他の実施例では、クロックゲーティング信号により畳み込み操作の相応の操作を制御することで、重み分類の終了点をイネーブル信号としてクロックゲーティング機能をトリガし、それ以外の時間にはゲーティング機能をオフにしてもよい。
【００６３】
本開示の実施例では、重みは、重み変換によって事前に非ゼロ圧縮されたため、畳み込み操作の時間はゼロではない重みの数のみに関連するようになり、重み畳み込みカーネルのスパース率を十分に活用して、推定実行時間を大幅に節約する。それとともに、新しい処理ユニット構造は、拡張性がよりよく、計算の早期終了機能、クロックゲーティング機能、及びゼロデータ時の計算中止などの機能をサポートすることができ、即ち、データのスパース特性を利用して、演算量をさらに減らし、クロックゲーティングにより消費電力を減らすことができる。
【００６４】
実施例３
本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理方法を提供し、図３は、本開示の実施例３にて提供される畳み込みニューラルネットワークの畳み込み処理方法の概略フローチャートであり、図３に示すように、当該方法は、ステップＳ３０１を含む。
【００６５】
ステップＳ３０１では、重み変換ユニットが重み変換を行う。
ここで、重み変換ユニットは、ソフトウェアコーデック、スクリプト・ファイルなどのツールであってもよいし、手動方式を用いてもよく、畳み込みカーネルに対して分割と再配列を行い、処理ユニットに対するシミュレーションにより、最適な方式で畳み込みカーネルを分割して再配列し、再配列後のインジケータテーブル及びマッピングテーブルはグローバルバッファに記憶される。
【００６６】
本開示の実施例では、コンパイラ、スクリプト又は手動方式により、重みを変換する。コンパイラを用いて重み変換を行うことを例とし、コンパイラにより反復操作を行って、１つのＲ×Ｓ×ＣＨ大きさの畳み込みカーネルを複数のＲ×Ｓ×Ｃのサブ畳み込みカーネル（ここで、Ｒは畳み込みカーネルの列幅で、Ｓは畳み込みカーネルの行幅で、Ｃはサブ畳み込みカーネルのチャネル数であり、当層の畳み込みカーネルのチャネル数はＣｈであると仮定すると、Ｃ＜＝Ｃｈである）に分割し、各々のサブ畳み込みカーネルにおける固定小数点化後の重み値を再配列し、再配列後の重みをインジケータテーブル及びマッピングテーブルの形式に変換する。
【００６７】
図４は、本開示の実施例３にて提供される重みの分類及び再配列の概略フローチャートであり、本開示の実施例では、コンパイラを用いて重み変換を行い、ここで、コンパイラの内部は畳み込みカーネル分割モジュール、再配列ポリシー選択モジュール、サブ畳み込みカーネル再配列モジュール及び再配列性能模擬モジュールに分けられ、図４に示すように、重みの分類及び再配列は、ステップＳ４０１〜ステップＳ４０５を含む。
【００６８】
ステップＳ４０１では、コンパイラが元の畳み込みカーネルを取得する。
【００６９】
ステップＳ４０２では、畳み込みカーネル分割モジュールが元の畳み込みカーネルを分割する。
ここで、畳み込みカーネル分割モジュールが元の畳み込みカーネルを分割することにより、サブ畳み込みカーネルが形成される。図５は、本開示の実施例３にて提供される元の畳み込みカーネルをサブ畳み込みカーネルに分割した構造の概略図であり、図５に、元の畳み込みカーネルを分割して得た複数のサブ畳み込みカーネル及び各サブ畳み込みカーネルの行幅５０１、列幅５０２及びチャネル数５０３を示した。
【００７０】
ステップＳ４０３では、再配列ポリシー選択モジュールはサブ畳み込みカーネルに対応する再配列ポリシーを選択する。
【００７１】
ステップＳ４０４では、サブ畳み込みカーネル再配列モジュールは再配列ポリシーに応じてサブ畳み込みカーネルを再配列する。
【００７２】
ステップＳ４０５では、再配列性能模擬モジュールは再配列結果に応じて対応するインジケータテーブル及びマッピングテーブルを生成する。
【００７３】
図６は、本開示の実施例３にて提供される生成されたインジケータテーブルとマッピングテーブルの概略図であり、図６に示すように、インジケータテーブル６０１とマッピングテーブル６０２とは、対応する関連関係がある。
【００７４】
図７は、本開示の実施例３にて提供される重みの再配列後の重みテーブルエントリ構造の概略図であり、図７に示すように、インジケータテーブル７１は、重み値７０１、終了アドレス７０２、シフト値７０３、加減算タイプ７０４、拡張情報７０５及び分類指示７０６を記憶するためのものであり、マッピングテーブル７２は、重みの行、列及びチャネル数を特徴付けるアドレッシング方式７０７を表す。
【００７５】
符号化方式はＬ（ｉｗｘ、ｊｗｘ、ｋｗｘ）で表されてもよく、Ｌ（ｉｗｘ、ｊｗｘ、ｋｗｘ）は、行、列及びチャネル数に対するアドレッシング方式を表し、ここで、ｉｗｘは重みｗｘに対応する行番号を表し、値の範囲は（０、Ｒ−１）であり、ｊｗｘは重みｗｘに対応する列番号を表し、値の範（０、Ｒ−１）であり、ｋｗｘは重みｗｘに対応するチャネル番号を表し、値の範囲は（０、Ｒ−１）であり、Ｒはサブ畳み込みカーネルの列幅である。
【００７６】
他の実施例では、さらに、コンパイルスクリプト又は手動操作などにより重みを変換してもよい。
【００７７】
本開示の実施例では、異なる再配列ポリシーを選択することができ、各再配列ポリシーは１つの再配列モードに対応し、８Ｂｉｔによる固定小数点化後の重みを例としてこれらの再配列ポリシーを説明する。
【００７８】
方式１：ポリシーなしに再配列を行い、早期中止機能を有効にしない。
本開示の実施例では、同じ重みを一緒に再配列し、２５６個の重みがある場合、当該重みに対応する畳み込みカーネルの列幅はＲで、行幅はＳで、チャネル数はＣであると仮定すると、本来Ｒ×Ｓ×Ｃ回の乗加算操作が必要であるが、本開示の実施例によると、最大でＲ×Ｓ×Ｃ＋２５６回の加算操作と２５６回の乗算操作のみが必要となるように変換することができる。
【００７９】
方式２：ポリシーなしに再配列を行い、早期中止機能を有効にする。
本開示の実施例では、同じ重みのみを一緒に再配列し、先に正の重みを配列し、後で負の重みを配列する。２５６個の重みがある場合、当該重みに対応する畳み込みカーネルは、列幅がＲで、行幅がＳで、チャネル数がＣであり、本来Ｒ×Ｓ×Ｃ回の乗加算操作が必要であるが、本開示の実施例によると、変換後に、最大でＲ×Ｓ×Ｃ＋２５６回の加算操作と２５６回の乗算操作のみが必要となり、それとともに、畳み込み計算の累積和がオフセット未満である場合、畳み込み演算を早期中止することができる。
【００８０】
図８は、本開示の実施例３にて提供される方式２の重みの再配列後の重みテーブルエントリ構造の概略図であり、図８に示すように、インジケータテーブル８１における各行は、１つの重み分類に対応するインジケータを表し、第１行は、重み値は１、終了アドレスは重み１の終了アドレス、シフトなし、加算の実行、拡張情報、重み及び分類終了指示を含み、第２行は、重み値は２、終了アドレスが重み２の終了アドレス、シフトなし、加算の実行、拡張情報、重み及び分類終了指示を含み、第３行は、重み値は３、終了アドレスは重み３の終了アドレス、シフトなし、加算の実行、拡張情報、重み及び分類終了指示を含み、第４行は、重み値は-１、終了アドレスは重み-１の終了アドレス、シフトなし、減算の実行、拡張情報、再配列終了指示を含む。マッピングテーブル８２は各インジケータに対応する各類の重みの重み値のアドレスを特徴付ける。
【００８１】
方式３：優先に類別を減らして再配列を行い、早期中止機能を有効にしない。
本開示の実施例では、絶対値が同じの正負の重み値を併合する方式、２の冪乗倍数重みを併合する方式などの併合方式により、重みの類別を６４類以下に減らし、６４類に減らすことを例とし、この場合、畳み込みの早期中止機能を有効にせず、当該重みに対応する畳み込みカーネルは、列幅がＲで、行幅がＳで、チャネル数がＣであると仮定すると、本来Ｒ×Ｓ×Ｃ回の乗加算操作が必要であるが、本開示の実施例によると、変換後に、最大でＲ×Ｓ×Ｃ＋６４回の加算操作と６４回の乗算操作のみが必要となる。
【００８２】
図９は、本開示の実施例３にて提供される方式３の重みの再配列後の重みテーブルエントリ構造の概略図であり、図９に示すように、インジケータテーブル９１における各行は、１つの重み分類に対応するインジケータを表し、第１行は、重み値は１、終了アドレスは重み１の終了アドレス、シフトなし、加算の実行、拡張情報、重み終了指示を含み、第２行は、重み値は-１、終了アドレスは重み-１の終了アドレス、シフトなし、減算の実行、拡張情報、重み終了指示を含み、第３行は、重み値は２で、終了アドレスは重み２の終了アドレス、１だけシフト、加算の実行、拡張情報、重み終了指示を含み、第４行は、重み値は-６４、終了アドレスは重み-６４の終了アドレス、６だけシフト、減算の実行、拡張情報、重み終了指示を含み、第５行は、重み値は３、終了アドレスは重み３の終了アドレス、シフトなし、加算の実行、拡張情報、重み終了指示を含み、第６行は、重み値はｎ-１で、終了アドレスは重みｎ-１の終了アドレス、ｘだけシフト、加算／減算の実行、拡張情報、再配列終了指示を含む。
【００８３】
マッピングテーブル９２は、各インジケータに対応する各類の重みの重み値のアドレスを特徴付ける。
【００８４】
方式４：早期中止機能を有効にし、類別をできるだけ併合する。
本開示の実施例では、正の重みと負の重みとを分けて併合し、正の重みの類別を前に配列し、負の重みの類別を後ろに配列して、２つの機能を両立できるという特徴があるが、本方式で重み再配列を行う乗算の使用率は、方式３での乗算の使用率より高い。
【００８５】
図１０は、本開示の実施例３にて提供される方式４の重みの再配列後の重みテーブルエントリ構造の概略図であり、図１０に示すように、インジケータテーブル１００１おける各行は、１つの重み分類に対応するインジケータを表し、第１行は、重み値は１、終了アドレスは重み１の終了アドレス、シフトなし、加算の実行、拡張情報、重み終了指示を含み、第２行は、重み値は２、終了アドレスは重み２の終了アドレス、１だけシフト、加算の実行、拡張情報、重み終了指示を含み、第３行は、重み値は６４、終了アドレスは重み６４の終了アドレス、６だけシフト、加算の実行、拡張情報、重み及び分類終了指示を含み、第４行は、重み値は３、終了アドレスは重み３の終了アドレス、シフトなし、加算の実行、拡張情報、重み終了指示を含み、第５行は、重み値は１２７、終了アドレスは重み１２７の終了アドレス、シフトなし、加算の実行、拡張情報、重み及び分類終了指示を含み、第６行は、重み値は-１、終了アドレスは重み-１の終了アドレス、シフトなし、減算操作の実行、拡張情報、重み終了指示を含み、第７行は、重み値は-１２８、終了アドレスは重み-１２８の終了アドレス、シフトなし、減算の実行、拡張情報、再配列終了指示を含む。
【００８６】
マッピングテーブル１００２は各インジケータ対応する各類の重みの重み値のアドレスを特徴付ける。
【００８７】
ステップＳ３０２では、コントローラが命令解析及びパラメータコンフィグレーションを行う。
ここで、図１１は、本開示の実施例３にて提供される畳み込みニューラルネットワークの畳み込み処理構造の概略図であり、図１１に示すように、制御ユニット１１０１のコントローラが命令１１０２を解析した後、処理ユニット１１０３に対してパラメータコンフィグレーションを行い、バッファユニット１１０４のグローバルバッファ内のデータ１１０５から入力するデータブロックを選択し、処理ユニットに対して機能パラメータコンフィグレーションを行う。
【００８８】
ステップＳ３０３では、データブロック及び重みインジケータを導入する。
ここで、１つの処理ユニットの１回のスケジューリング実行について、グローバルバッファから分割後のサブ畳み込みカーネルと同じ大きさ、即ち列幅がＲで、行幅がＳで、チャネル数がＣ（Ｒ×Ｓ×Ｃ）であるデータを読み取って、データバッファ（ここで、Ｒはサブ畳み込みカーネルの列幅で、Ｓはサブ畳み込みカーネルの行幅で、Ｃはサブ畳み込みカーネルのチャネル数である）に格納する。グローバルバッファから、処理する必要のあるサブ畳み込みカーネルの重みインジケータをインジケータバッファに読み込む。
【００８９】
ステップＳ３０４、データストリームを読み取る。
ここで、重み再配列後のマッピングテーブル内容を順番に読み取り、マッピングテーブル内容をアドレス又は選択条件として、プロセッサの内部バッファからデータを読み取る。本開示の実施例では、処理ユニットのコントローラは、１番目のインジケータをコントローラに読み込み、その後、重みの再配列後のマッピングテーブルの内容を順番に読み取り、マッピングテーブルの内容をアドレス／選択条件として、データバッファからデータを読み取る。
【００９０】
ステップＳ３０５では、分類累積ユニットが分類累積操作を行う。
ここで、分類累積ユニットは、主に、ある重み分類の累積操作、を完了するとともに、ゼロデータスキップ操作をサポートする。
【００９１】
本開示の実施例では、同一のインジケータテーブルエントリ内に対応するマッピングテーブルエントリを読み取る場合、処理ユニットの分類累積ユニットで計算の前処理及び加算／減算操作を行う。図１２は、本開示の実施例３にて提供される別の畳み込みニューラルネットワークの畳み込み処理構造の概略図であり、図１２に示すように、バッファユニットは、グローバルバッファ１２０１、重みインジケータバッファ１２０２、重みマッピングテーブルバッファ１２０３及びデータバッファ１２０４を含み、処理ユニット１２２は、分類累積ユニット１２０５と、分類乗算と部分和累積ユニット１２０６とを含み、制御ユニット１２３は、各ユニットを制御する制御命令を受信と送信するように設定される。
【００９２】
他の実施例では、図１３は、本開示の実施例３にて提供される別の畳み込みニューラルネットワークの畳み込み処理構造の概略図であり、図１３に示すように、処理ユニット１３は、分類累積ユニット１３１と、分類乗算と部分和累積ユニット１３２とを含み、ここで、分類累積ユニット１３１は、コントローラモジュール１３０１、分類累積和モジュール１３０２、前処理モジュール１３０３、ゼロ判定中止モジュール１３０４、及び加算／減算操作モジュール１３０５を含み、分類乗算と部分和累積ユニット１３２は、判断中止モジュール１３０６、乗算モジュール１３０７、部分和モジュール１３０８、及び加算モジュール１３０９を含む。
【００９３】
処理ユニット１３の分類累積ユニット１３１が計算の前処理及び加算／減算操作を行う。異なる実施ポリシーによって、即ち、重み再配列ポリシーによって処理ユニット１３の分類累積ユニット１３１で計算の前処理、即ちシフト操作と加算／減算操作を行い、ここで、シフト量はインジケータテーブルにおける構成によって決められ、加算／減算操作は、インジケータテーブルにおける構成によって決められる。入力されたデータが０である場合、累積／減算動作の処理を一時停止する、又は中止する。分類乗算と部分和累積ユニット１３２は、分類累積ユニット１３１によって出力された累積和と、対応する重みとの乗算操作、及び乗算結果を部分和に累積する動作を完了するように設定される。そして、クロックゲーティング機能と早期中止機能をサポートする。
【００９４】
ステップＳ３０６では、分類累積ユニットは分類累積が終了したか否かを判断する。
ここで、同一のインジケータテーブルエントリに対応するマッピングテーブルエントリの読み取りが完了すると、分類終了フラグを確認し、分類終了フラグが「終了していない」である場合、次のインジケータテーブルエントリを読み取り、ステップＳ３０５を繰り返す。
【００９５】
ステップＳ３０７では、分類切り替え制御を行う。
ここで、同一のインジケータ内のマッピングテーブルエントリの読み取が完了すると、分類終了フラグを確認し、分類終了フラグが「終了した」である場合、累積／減算の結果と、対応する重み値及び分類累積処理ユニットの番号とを分類乗加算処理ユニットに送り、同時に、次のインジケータテーブルエントリを読み取って、分類累積プロセッサ内の累積値をクリアしてゼロにし、ステップＳ３０５の操作を再開始し、これを、インジケータテーブルエントリにおける分類終了フラグが、畳み込み操作が全部完了したことを示すまで行う。
【００９６】
ステップＳ３０８では、分類乗算と部分和累積ユニットが分類乗算を行う。
ここで、分類乗算と部分和累積ユニットは、主に、分類累積ユニットによって出力された累積和と、対応する重みとの乗算操作、及び乗算結果を部分和に累積する動作を完了する。そして、クロックゲーティング機能及び早期中止機能をサポートする。
【００９７】
本開示の実施例では、分類乗加算処理ユニットは、入力された重み及びデータの乗算操作を完了し、かつ、乗算の結果を部分和に累積する。構成において、演算を早期中止することができる否かの判断を選択した場合、現在の部分和の値とオフセット値との差分値が０未満であるか否かを判断し、ゼロ未満であると、処理ユニットのコントローラにフィードバックして、処理を中止する。
【００９８】
クロックゲーティングは、再配列後の重み分類の終了点をイネーブル信号とし、それ以外の時間にはクロックをオフにしてもよい。ステップＳ３０１にて提供された異なる実施案により、分類乗算ユニットが演算を早期中止できるか否かを構成し、早期停止機能がイネーブルされる場合、現在の部分和の値とオフセット値との差分値が０未満であるか否かを判断し、ゼロ未満であると、処理ユニットのコントローラにフィードバックして、処理を中止する。機能がイネーブルされない場合、部分値とオフセット値との判断を行わない。
【００９９】
本開示の実施例では、スパース畳み込みニューラルネットワークを実現する装置は、重み変換ユニット、バッファユニット、制御ユニット及び処理ユニットを含む。
【０１００】
重み変換ユニットは、ソフトウェアコーデック、スクリプト・ファイルなどのツールであってもよいし、手動方式を用いてもよく、畳み込みカーネルに対する分割と再配列を担当し、処理ユニットに対するシミュレーションにより、最適な方式で畳み込みカーネルを分割して再配列し、再配列後のインジケータテーブル及びマッピングテーブルはグローバルバッファに記憶される。
【０１０１】
処理ユニットは、分類累積ユニットと分類乗算と部分和累積ユニットとの２つの部分に分けられる。
【０１０２】
分類累積ユニットは、ある重み分類の累積操作を完了するとともに、ゼロデータスキップ操作をサポートするように設定される。
【０１０３】
分類乗算と部分和累積ユニットは、分類累積ユニットによって出力された部分和と、対応する重みとの乗算操作、及び乗算結果を部分和に累積する動作を完了するように設定される。そして、クロックゲーティング機能及び早期中止機能をサポートする。
【０１０４】
バッファユニットは、１段構造を用いても、多段バッファ構造を用いてもよい。２段バッファを例とすると、
グローバルバッファはデータバッファ、重みインジケータバッファ及び重みマッピングバッファに１回のスケジューリング、即ちサブ畳み込みカーネルの畳み込み操作に必要なデータ、重みインジケータテーブル及び重みマッピングテーブルを提供する。
【０１０５】
重みマッピングバッファは、重みマッピングテーブル値をデータバッファに送信し、データバッファのアドレスとして、対応する位置のデータを読み取って、分類累積ユニットに送信する。
【０１０６】
重みインジケータバッファは、インジケータを分類累積ユニットに送信して、分類累積ユニットの内部操作を制御し、分類累積ユニットの演算結果を分類乗算ユニットに送信して計算し続ける必要があるか否かを制御する。
【０１０７】
本開示の実施例では、重み変換と新しい処理ユニットとの組み合わせによって、重みは、事前に非ゼロ圧縮されたため、畳み込み操作の時間はゼロではない重みの数のみに関連するようになり、重み畳み込みカーネルのスパース率を十分に活用して、推定実行時間を大幅に節約する。それとともに、新しい処理ユニット構造は、拡張性がよりよく、計算の早期終了機能、クロックゲーティング機能、及びゼロデータ時の計算中止などの機能をサポートすることができ、即ち、データのスパース特性を利用して、演算量をさらに減らし、クロックゲーティングにより消費電力を減らすことができる。
【０１０８】
実施例４
前記の実施例に基づいて、本開示の実施例は、畳み込みニューラルネットワークの畳み込み処理装置を提供し、当該装置に含まれる各ユニット、及び各ユニットに含まれる各サブユニットは、いずれもコンピュータ機器のプロセッサによって実装されることができ、勿論、論理回路によって実装されることもでき、実施プロセスにおいて、プロセッサは、中央処理装置（ＣＰＵ）、マイクロプロセッサ（ＭＰＵ）、デジタル信号プロセッサ（ＤＳＰ）或いはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などであってもよく、ここで、コンピュータ機器は、携帯電話、ノートパソコン、デスクトップ、サーバなどであってもよい。
【０１０９】
図１４は、本開示の実施例４にて提供される畳み込みニューラルネットワークの畳み込み処理装置の構成構造の概略図であり、図１４に示すように、前記装置は、
前記畳み込みニューラルネットワークのサブ畳み込みカーネルの重み値を分類するように構成される分類ユニット１４０１と、
各前記重み値の分類結果に応じて、対応する重み値のために、データに対する相応の操作を記憶するためのインジケータ及び重み値を特徴付けるためのアドレスを生成するように構成される生成ユニット１４０２と、
前記重み値のアドレスに応じて、対応する処理対象データを取得するように構成される取得ユニット１４０３と、
前記インジケータに応じて、前記処理対象データに対して畳み込み操作を行って、畳み込み結果を獲得するように構成される畳み込み処理ユニット１４０４と、を含む。
【０１１０】
他の実施例では、前記装置は、さらに、
前記畳み込みニューラルネットワークにおける元の畳み込みカーネルを分割して、少なくとも２つのサブ畳み込みカーネルを獲得するように構成される分割ユニットと、
各前記サブ畳み込みカーネルにおける元の重み値に対して固定小数点化処理を行って、前記サブ畳み込みカーネルにおける重み値を獲得するように構成される固定小数点化ユニットと、を含む。
【０１１１】
他の実施例では、前記取得ユニットは、さらに、
入力された元の処理対象データ集合から、前記サブ畳み込みカーネルと列幅、行幅及びチャネル数がいずれも同じの処理対象データ集合を決定し、
前記処理対象データ集合内の各処理対象データのアドレスと前記サブ畳み込みカーネル内の相応の重み値のアドレスとの対応関係を確立し、
対応関係に応じて、前記処理対象データ集合内の相応のアドレスの処理対象データを取得するように構成される。
【０１１２】
他の実施例では、前記畳み込み処理ユニットは、さらに、
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データの累積和を取得し、
前記累積和に、対応する重み値を掛けて部分和を取得し、
全ての類別の重み値に、対応する全ての部分和を加算して畳み込み結果を獲得するように構成される。
【０１１３】
他の実施例では、前記畳み込み処理ユニットは、さらに、
前記インジケータに応じて、各類の重み値における全ての重み値に対応する全ての処理対象データに対して前処理を行い、前処理された全ての処理対象データの累積和を取得するように構成され、ここで、前記処理対象データはゼロではない。
【０１１４】
他の実施例では、前記畳み込み処理ユニットは、さらに、
前記累積和が予め設定されたオフセット値以上であると決定された場合、前記累積和に、対応する重み値を掛けて部分和を獲得するように構成される。
【０１１５】
他の実施例では、前記畳み込み処理ユニットは、さらに、
前記部分和と予め設定されたオフセット値との差分値を決定し、
前記部分和と予め設定されたオフセット値との差分値がゼロ以上であると決定した場合、全ての類別の重み値に対応する全ての部分和を加算して畳み込み結果を獲得するように構成される。
【０１１６】
他の実施例では、分類ユニットは、さらに、
前記サブ畳み込みカーネルにおける同じ重み値を１つの類別に分類し、又は、
絶対値が同じの重み値を１つの類別に分類し、又は、
２の冪乗倍数である重み値を１つの類別に分類し、又は、
正の重み値と負の重み値とをそれぞれ１つの類別にするように構成される。
【０１１７】
なお、本開示の実施例では、上記畳み込みニューラルネットワークの畳み込み処理方法は、ソフトウェア機能ユニットの形態で実装され、かつ、独立の製品として販売又は使用される場合、コンピュータ読み取可能な記憶媒体に記憶されてもよい。このような理解に基づいて、本開示の実施例の技術案の本質、言い換えれば従来の技術にとって貢献がある部分は、ソフトウェア製品の形態で具現化されることができ、当該コンピュータソフトウェア製品は、記憶媒体に格納され、コンピュータ機器に本開示の各実施例に記載の装置の全部又は一部を実行させるようにするいくつかの命令を含む。
【０１１８】
前記記憶媒体は、ＵＳＢフラッシュメモリ、モバイルハードディスク、読み取り専用メモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、磁気ディスク又は光ディスクなど、プロクラムコードを記憶できる様々な媒体を含む。このように、本開示の実施例は、ハードウェアとソフトウェアの特定の組み合わせに限定されない。
【０１１９】
これに対して、本開示の実施例は、コンピュータプロクラムが記憶されているコンピュータ可読記憶媒体を提供し、当該コンピュータプロクラムがプロセッサによって実行されると、上記のいずれか１つの実施例にて提供される畳み込みニューラルネットワークの畳み込み処理方法のステップが実施される。
【０１２０】
これに対して、本開示の実施例は、メモリ及びプロセッサを含むコンピュータ機器を提供し、前記メモリには、プロセッサにより実行可能なコンピュータプロクラムが記憶されており、前記プロセッサが前記プロクラムを実行すると、上記のいずれか１つの実施例にて提供される畳み込みニューラルネットワークの畳み込み処理方法のステップが実施される。
【０１２１】
本開示の装置の実施例に対する説明は、上記装置の実施例の説明と類似で、装置実施例と同様な有益な効果を有する。本開示の装置の実施例に開示されていない技術の詳細は、本開示の装置の実施例に対する説明を参照してください。
【０１２２】
ここで、以上の記憶媒体及び機器の実施例に対する説明は、上記装置の実施例の説明と類似で、装置の実施例と同様な有益効果を有することに留意されたい。本開示の記憶媒体及び機器の実施例に開示されていない技術の詳細は、本開示の装置の実施例に対する説明を参照してください。
【０１２３】
勿論、本開示の実施例の装置は、他の類似なプロトコルインタラクション実施事例を有してもよく、当業者は、本開示の精神及び本質から逸脱しない限り、本開示の実施例に対して様々な相応の変更及び変形を行うことができるが、これらの相応の変更及び変形は、本開示の装置の特許請求の保護範囲に属するべきである。
【０１２４】
当業者が理解するべきことは、本開示の実施例は、装置、システム、又はコンピュータプロクラム製品として提供されることができる。したがって、本開示は、ハードウェア実施例、ソフトウェア実施例、又はソフトウェアとハードウェアの組み合わせ態様の実施例の形態を取り得る。そして、本開示は、コンピュータ使用可能なプロクラムコードを内部に含む１つ又は複数のコンピュータ使用可能な記憶媒体（磁気ディスクメモリ及び光学メモリなどを含むが、これらに限定されない）で実施されるコンピュータプロクラム製品の形態を取り得る。
【０１２５】
本開示は、本開示の実施例による装置、機器（システム）、及びコンピュータプロクラム製品のフローチャート及び／又はブロック図を参照しながら説明されたものである。コンピュータプロクラム命令によって、フローチャート及び／又はブロック図における各フロー及び／又はブロック、並びにフローチャート及び／又はブロック図におけるフロー及び／又はブロックの組み合わせが実施され得ることを理解すべきである。機器を生成するために、これらのコンピュータプロクラム命令を汎用コンピュータ、専用コンピュータ、組み込み式プロセッサ又は他のプログラム可能データ処理機器のプロセッサに提供することができ、それにより、コンピュータ又は他のプログラム可能データ処理機器のプロセッサによって実行される命令によって、フローチャートの１つのフロー又は複数のフロー及び／又はブロック図の１つのブロック又は複数のブロック内で指定された機能を実装するための機器が生成される。
【０１２６】
これらのコンピュータプロクラム命令は、コンピュータ又は他のプログラム可能データ処理機器が特定の方式で動作するように導くことができるコンピュータ可読メモリに記憶されてもよく、それにより、当該コンピュータ可読メモリに記憶された命令によって、命令機器を含む製品が生成され、当該命令機器は、フローチャートの１つのフロー又は複数のフロー及び／又はブロック図の１つのブロック又は複数のブロックで指定された機能を実現する。
【０１２７】
これらのコンピュータプロクラム命令は、コンピュータ又は他のプログラム可能データ処理機器にロードされてもよく、それにより、コンピュータ又は他のプログラム可能機器上で一連の操作ステップを実行してコンピュータによって実現される処理が生成されるため、コンピュータ又は他のプログラム可能機器上で実行される命令は、フローチャートの１つのフロー又は複数のフロー及び／又はブロック図の１つのブロック又は複数のブロックで指定された機能を実施するためのステップを提供する。
【０１２８】
明細書全体にわたって言及された「１つの実施例」又は「一実施例」は、実施例に関連する特定の特徴、構造又は特性が本開示の少なくとも１つの実施例に含まれることを意味することを理解すべきである。したがって、明細書全体の様々な箇所に現れた「１つの実施例では」又は「一実施例では」という表現は、必ずしも同じ実施例を示すとは限らない。また、これらの特定の特徴、構造又は特性は、任意の適切な方式で１つ又は複数の実施例に組み込まれてもよい。本開示の各実施例では、上記各プロセス番号の大きさは実行手順を意味するものではなく、各プロセスの実行手順は、その機能及び内部ロジックによって決定されるべきであり、本開示の実施例の実施プロセスに対する如何なる限定も構成しないことを理解されたい。上記本開示の実施例の番号は、説明のためのものにすぎず、実施例の優劣を表すものではない。
【０１２９】
なお、本明細書において、用語「含む」、「備える」又は他のいずれかの他の変形は、非排他的に含むことを意図しており、それにより一連の要素を含むプロセス、装置、物品又は装置は、それらの要素を含むだけでなく、明確に羅列していない他の要素も含み、又は、このようなプロセス、装置、物品又は装置に固有の要素も含む。より多くの制限がない場合、「……を含む」により限定される要素は、当該要素を含むプロセス、装置、物品又は装置に別の同じ要素が存在することを除外しない。
【０１３０】
本願にて提供されるいくつかの実施例において、開示された機器及び装置は、他の方式で実装されることもできることに留意されたい。上記のとおりに説明された機器の実施例は、例示的なものにすぎず、例えば、前記ユニットの分割は、ロジック機能の分割にすぎず、実際に実施される際に別の分割方式で分割することも可能であり、例えば、複数のユニット又はコンポーネントを組み合わせてもよいし、別のシステムに集積してもよいし、一部の特徴を反映しないか又は実行しなくてもよい。また、図示又は検討された構成要素間の結合、又は直接結合、又は通信可能な接続は、一部のインタフェース、機器又はユニットを介して間接的に結合するか、又は通信可能に接続され、電気的形態であってもよいし、機械的形態又は他の形態であってもよい。
【０１３１】
上記の分離されている部品として説明したユニットは、物理的に分離されたものであってもよいし、なくてもよく、ユニットとして表示された部品は、物理的なユニットであってもよいし、なくてもよく、即ち、同一の場所に位置しても、複数のネットワークユニットに分散されてもよい。実際の必要に応じて、そのうちのユニットの一部又は全部を選択して本実施例の方案の目的を達成することができる。
【０１３２】
また、本開示の各実施例における各機能ユニットは、全部１つの処理ユニットに集積されてもよいし、それぞれ１つのユニットとして使用されてもよく、２つ以上のユニットとして１つのユニットに集積されてもよい。上記集積されたユニットは、ハードウェア形態で実装されてもよいし、ハードウェアプラスソフトウェア機能ユニットの形態で実装されてもよい。
【０１３３】
当業者であれば、上記装置の実施例のステップの全部又は一部は、プロクラム命令に関連するハードウェアによって完了されてもよく、前記プロクラムはコンピュータ読み取可能な記憶媒体に記憶されることができ、当該プロクラムが実行されると、上記装置の実施例を含むステップが実行され、前記記憶媒体は、リムーバブルストレージデバイス、読み取り専用メモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、磁気ディスク又は光ディスクなどの様々なプロクラムコードを記憶できる媒体を含む。
【０１３４】
又は、本開示の上記集積されたユニットは、ソフトウェア機能ユニット形態で実装されるとともに、独立の製品として販売又は使用される場合、コンピュータ読み取可能な記憶媒体に記憶されてもよい。このような理解を踏まえ、本開示の実施例の技術案の本質、言い換えれば従来技術にとって貢献がある部分は、ソフトウェア製品形態で具現化されることができ、当該コンピュータソフトウェア製品は、記憶媒体に格納され、サーバに本開示の各実施例に記載の装置の全部又は一部を実行させるためのいくつかの命令を含む。前記記憶媒体は、リムーバブルストレージデバイス、ＲＯＭ、磁気ディスク又は光ディスクなどの様々なプロクラムコードを記憶できる媒体を含む。
【０１３５】
以上は、本開示の実施形態にすぎず、本開示の保護範囲はこれらに限定されない。当御者であれば、本開示に開示された技術範囲内で容易に想到し得る変更、置換えなどは、いずれも本開示の保護範囲に含まれるものとする。したがって、本開示の保護範囲は前記特許請求の範囲の内容に準拠すべきである。
【産業上の利用可能性】
【０１３６】
以上のように、本発明の実施例にて提供される畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体は、重み変換と新しい処理ユニットとの組み合わせにより、重みのスパース特性を十分に発揮することができるという有益な効果を有する。
【図１】
2022502747.tif 000003
【図２Ａ】
2022502747.tif 000004
【図２Ｂ】
2022502747.tif 000005
【図２Ｃ】
2022502747.tif 000006
【図３】
2022502747.tif 000007
【図４】
2022502747.tif 000008
【図５】
2022502747.tif 000009
【図６】
2022502747.tif 000010
【図７】
2022502747.tif 000011
【図８】
2022502747.tif 000012
【図９】
2022502747.tif 000013
【図１０】
2022502747.tif 000014
【図１１】
2022502747.tif 000015
【図１２】
2022502747.tif 000016
【図１３】
2022502747.tif 000017
【図１４】
2022502747.tif 000018
【国際調査報告】
2022502747.tif 000019
2022502747.tif 000020
2022502747.tif 000021
2022502747.tif 000022