(57)【要約】      （修正有）【課題】ニューラルネットワークを実現するハードウェアのリソース使用率を向上させる。【解決手段】演算実行設備は、コントローラ、メモリ及び演算装置を含み、メモリは予め設定された単一命令セットを記憶することに用いられる。単一命令セットは、演算装置が多層演算を行う際に各層演算に対応する単一命令を含み、それぞれの単一命令はモジュール選択パラメータ及びモジュール動作パラメータを含む。コントローラはメモリから演算装置に必要な現在層演算に対応する現在の単一命令を読み取って、現在の単一命令に含まれるモジュール選択パラメータ及びモジュール動作パラメータを解析し、現在の単一命令に対応する演算パスを決定する。演算装置は、コントローラの制御下で現在の単一命令に対応する演算パスを連通し、現在の単一命令に対応する演算パスを利用して、演算装置の現在層演算における入力データを演算処理し、現在層演算の出力データを生成する。【選択図】図９
2019139747.tif 000002
【特許請求の範囲】
【請求項１】
演算装置であって、
マルチニューラルネットワークアーキテクチャを実現することに用いられ、複数の機能演算モジュールを含み、前記機能演算モジュールはスプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールのうちの少なくとも１つを含み、
複数の前記機能演算モジュールを組み合わせることで、複数の演算パスを連通形成することができ、それぞれの前記演算パスは１つの計算ロジックを実現することに用いられ、前記計算ロジックは畳み込み操作、逆畳み込み操作、プーリング操作、量子化操作及び全結合操作のうちの少なくとも１つを含むことを特徴とする演算装置。
【請求項２】
それぞれの前記機能演算モジュールが１つ又は複数の演算タイプに対応し、前記演算タイプはスプライス演算、拡張演算、畳み込み演算、プーリング演算、量子化演算、非線形演算又は全結合演算を含むことを特徴とする請求項１に記載の演算装置。
【請求項３】
すべての前記演算パスはいずれも少なくとも前記スプライスモジュール及び前記畳み込みモジュールを含むことを特徴とする請求項１に記載の演算装置。
【請求項４】
第一演算パスには更に前記拡張モジュールが含まれ、逆畳み込み操作を実現するために、前記畳み込みモジュールが前記拡張モジュールの後に接続されることを特徴とする請求項３に記載の演算装置。
【請求項５】
全結合操作を実現するために、第二演算パスにおいて、前記畳み込みモジュールは１＊１畳み込みカーネルサイズの畳み込み層を含むことを特徴とする請求項３に記載の演算装置。
【請求項６】
第三演算パスには更に量子化モジュールが含まれ、且つ量子化操作を実現するために、前記量子化モジュールが前記第三演算パスの末端に設置されることを特徴とする請求項３に記載の演算装置。
【請求項７】
第四演算パスには、畳み込み操作を実現するために、前記スプライスモジュール及び前記畳み込みモジュールのみが含まれることを特徴とする請求項３に記載の演算装置。
【請求項８】
前記畳み込みモジュールはストライドを持つ畳み込み層を含み、
前記畳み込み層のストライドが１である場合、前記畳み込みモジュールは畳み込み演算を実現することに用いられ、前記畳み込み層のストライドが１ではない場合、前記畳み込みモジュールは畳み込み演算及びプーリング演算を実現することに用いられることを特徴とする請求項２に記載の演算装置。
【請求項９】
前記量子化モジュールは浮動小数点数値を下位ビット値に量子化することにより、パラメータ圧縮及び非線形演算を実現することを特徴とする請求項２に記載の演算装置。
【請求項１０】
前記機能演算モジュールは更に逆畳み込みモジュール、プーリングモジュール又は全結合モジュールを含むことを特徴とする請求項１に記載の演算装置。
【請求項１１】
演算実行設備であって、
コントローラと、メモリと、請求項１〜１０のいずれか一項に記載の演算装置とを含み、前記メモリは予め設定された単一命令セットを記憶することに用いられ、前記単一命令セットは前記演算装置が多層演算を行う際に各層演算毎に対応する単一命令を含み、それぞれの前記単一命令はモジュール選択パラメータ及びモジュール動作パラメータを含み、
前記コントローラは、前記メモリから前記演算装置に必要な現在層演算に対応する現在の単一命令を読み取って、前記現在の単一命令に含まれるモジュール選択パラメータ及びモジュール動作パラメータを解析することにより、前記現在の単一命令に対応する演算パスを決定することに用いられ、前記コントローラは、更に前記演算装置に制御信号を送信することにより、前記演算装置に前記現在の単一命令に対応する演算パスを連通させることに用いられ、
前記演算装置は、前記コントローラの制御下で前記現在の単一命令に対応する演算パスを連通させ、前記現在の単一命令に対応する演算パスを利用して、前記演算装置の現在層演算における入力データに対して演算処理を行い、前記現在層演算の出力データを生成することに用いられ、前記現在層演算の入力データは前記演算装置が直前の層演算時に取得した出力データであり、現在層が第一層である場合、第一層演算の入力データが処理対象画像であることを特徴とする演算実行設備。
【請求項１２】
前記単一命令にはパラメータリストを持ち、前記パラメータリストには前記モジュール選択パラメータ及び前記モジュール動作パラメータが１つずつ示されることを特徴とする請求項１１に記載の演算実行設備。
【請求項１３】
請求項１２に記載の演算実行設備に応用され、前記演算実行設備のコントローラで実行される演算実行方法であって、
前記演算装置の現在層演算をスタートするとき、前記現在層演算に対応する現在の単一命令を読み取るステップと、
前記現在の単一命令のモジュール選択パラメータ及びモジュール動作パラメータを解析し、前記現在層演算に必要な機能演算モジュール及び前記機能演算モジュールに対応するモジュール動作パラメータを決定するステップと、
前記現在層演算に必要な機能演算モジュール及び前記機能演算モジュールに対応するモジュール動作パラメータに基づいて、前記演算装置における演算パスを決定し、前記演算パスは前記現在層演算に必要な機能演算モジュールを連通してなるステップと、
前記現在層演算の入力データを前記演算装置に入力することにより、前記演算装置は、決定された前記演算パスを利用して前記入力データに対して演算処理を行い、前記現在層演算の出力データを生成し、前記現在層演算の入力データが前記演算装置の直前の層演算における出力データであり、現在層が第一層である場合、第一層演算の入力データが処理対象画像であるステップと、
を含むことを特徴とする演算実行方法。
【請求項１４】
コンピュータプログラムが記憶されるコンピュータで読み取り可能な記憶媒体であって、
前記コンピュータプログラムがプロセッサで実行されるとき、上記請求項１３に記載の演算実行方法のステップを実行することを特徴とするコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、人工知能技術分野に関し、特に演算装置、演算実行設備及び演算実行方法に関する。
【背景技術】
【０００２】
画像認識、音声認識及び文字認識等の分野において、ニューラルネットワークはその強力なコンピューティングパワーで既に広く応用されており、スナップショット装置、顔認識装置等の画像処理装置ではいずれもニューラルネットワークを利用して画像を処理する。
【０００３】
ニューラルネットワークを製品に応用するとき、ニューラルネットワークの実行はＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、フィールドプログラマブルゲートアレイ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、特定用途向け集積回路）等のハードウェアで実現される必要がある。ニューラルネットワークは畳み込み、プーリング、全結合（dense）等の複数の演算層に関わる必要があるため、各演算層が同じ又は異なる計算ロジックにおけるネットワーク構造に対応し、異なるネットワーク構造はいずれも設計の異なるハードウェア構造に対応する必要があり、このため、このようなニューラルネットワークの実現形態はハードウェアリソースを浪費する恐れがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
これに鑑みて、本発明の目的は、従来技術におけるニューラルネットワークを実現するハードウェアリソースが浪費されやすい技術的問題を解決し、ハードウェアのリソース使用率を効果的に向上させることができる演算装置、演算実行設備及び演算実行方法を提供することである。
【課題を解決するための手段】
【０００５】
上記目的を実現するために、本発明の実施例は以下の技術案を用いた。
【０００６】
第一態様において、本発明の実施例は演算装置を提供する。前記演算装置はマルチニューラルネットワークアーキテクチャを実現することに用いられ、前記演算装置は複数の機能演算モジュールを含み、前記機能演算モジュールはスプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールのうちの少なくとも１つを含み、複数の前記機能演算モジュールを組み合わせることで、複数の演算パスを連通形成することができ、それぞれの前記演算パスは１つの計算ロジックを実現することに用いられ、前記計算ロジックは畳み込み操作、逆畳み込み操作、プーリング操作、量子化操作及び全結合操作のうちの少なくとも１つを含む。
【０００７】
更に、それぞれの前記機能演算モジュールが１つ又は複数の演算タイプに対応し、前記演算タイプはスプライス演算、拡張演算、畳み込み演算、プーリング演算、量子化演算、非線形演算又は全結合演算を含む。
【０００８】
更に、すべての前記演算パスはいずれも少なくとも前記スプライスモジュール及び前記畳み込みモジュールを含む。
【０００９】
更に、第一演算パスには更に前記拡張モジュールが含まれ、逆畳み込み操作を実現するために、前記畳み込みモジュールが前記拡張モジュールの後に接続される。
【００１０】
更に、全結合操作を実現するために、第二演算パスにおいて、前記畳み込みモジュールは１＊１畳み込みカーネルサイズの畳み込み層を含む。
【００１１】
更に、第三演算パスには更に量子化モジュールが含まれ、且つ量子化操作を実現するために、前記量子化モジュールが前記第三演算パスの末端に設置される。
【００１２】
更に、畳み込み操作を実現するために、第四演算パスには前記スプライスモジュール及び前記畳み込みモジュールのみが含まれる。
【００１３】
更に、前記畳み込みモジュールはストライドを持つ畳み込み層を含み、前記畳み込み層のストライドが１である場合、前記畳み込みモジュールは畳み込み演算を実現することに用いられ、前記畳み込み層のストライドが１ではない場合、前記畳み込みモジュールは畳み込み演算及びプーリング演算を実現することに用いられる。
【００１４】
更に、前記量子化モジュールは浮動小数点数値を下位ビット値に量子化することにより、パラメータ圧縮及び非線形演算を実現する。
【００１５】
更に、前記機能演算モジュールは更に逆畳み込みモジュール、プーリングモジュール又は全結合モジュールを含む。
【００１６】
第二態様において、本発明の実施例は更に演算実行設備を提供する。前記演算実行設備はコントローラ、メモリ及び第一態様に記載の演算装置を含み、前記メモリは予め設定された単一命令セットを記憶することに用いられ、前記単一命令セットは前記演算装置が多層演算を行う際に各層演算に対応する単一命令を含み、それぞれの前記単一命令はモジュール選択パラメータ及びモジュール動作パラメータを含み、前記コントローラは前記メモリから前記演算装置に必要な現在層演算に対応する現在の単一命令を読み取って、前記現在の単一命令に含まれるモジュール選択パラメータ及びモジュール動作パラメータを解析することにより、前記現在の単一命令に対応する演算パスを決定することに用いられ、前記コントローラは更に前記演算装置に制御信号を送信することにより、前記演算装置に前記現在の命令に対応する演算パスを連通させることに用いられ、前記演算装置は前記コントローラの制御下で前記現在の単一命令に対応する演算パスを連通し、前記現在の単一命令に対応する演算パスを利用して、前記演算装置の現在層演算における入力データを演算処理し、前記現在層演算の出力データを生成することに用いられ、前記現在層演算の入力データは前記演算装置が前層演算時に取得した出力データであり、前記現在層が第一層である場合、前記第一層演算の入力データが処理対象画像である。
【００１７】
更に、前記単一命令にパラメータリストを持ち、前記パラメータリストに前記モジュール選択パラメータ及び前記モジュール動作パラメータが１つずつ示される。
【００１８】
第三態様において、本発明の実施例は演算実行方法を提供する。前記方法は第二態様に記載の演算実行設備に応用され、前記方法は演算実行設備のコントローラで実行され、前記方法は、前記演算装置の現在層演算をスタートするとき、前記現在層演算に対応する現在の単一命令を読み取ることと、前記現在の単一命令のモジュール選択パラメータ及びモジュール動作パラメータを解析し、前記現在層演算に必要な機能演算モジュール及び前記機能演算モジュールに対応するモジュール動作パラメータを決定するステップと、前記現在層演算に必要な機能演算モジュール及び前記機能演算モジュールに対応するモジュール動作パラメータに基づいて、前記演算装置における演算パスを決定し、前記演算パスは前記現在層演算に必要な機能演算モジュールを連通してなることと、前記現在層演算の入力データを前記演算装置に入力することにより、前記演算装置が決定された前記演算パスを利用して、前記入力データを演算処理し、前記現在層演算の出力データを生成し、前記現在層演算の入力データが前記演算装置の前層演算における出力データであり、前記現在層が第一層である場合、前記第一層演算の入力データが処理対象画像であるステップと、を含む。
【００１９】
第四態様において、本発明の実施例はコンピュータで読み取り可能な記憶媒体を提供する。前記コンピュータで読み取り可能な記憶媒体にコンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサで実行されるとき、上記第三態様の方法のステップを実行する。
【００２０】
本発明の実施例は演算装置を提供し、マルチニューラルネットワークアーキテクチャを実現することに用いられてもよく、該演算装置はスプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュール等の複数の機能演算モジュールを含み、複数の機能演算モジュールを柔軟に組み合わせることで、複数の演算パスを連通形成することができ、従って、対応する計算ロジックを実現する。本実施例に係るこのような演算装置は、それぞれのネットワーク構造にはいずれも対応するハードウェア構造を独立して構築する必要がなく、このような多機能多重演算装置はハードウェアリソースを非常に効果的に節約する。
【００２１】
演算装置を基に、本発明の実施例は更に演算実行設備及び方法を提供し、コントローラは演算装置に必要な現在層演算に対応する現在の単一命令を解析することにより、演算装置を制御して現在の単一命令に対応する演算パスを連通させることができ、それにより現在層演算処理を行う。このような形態は単一命令に基づいて、同一演算装置をコンパイルして異なるネットワーク構造を形成するように制御し、異なるネットワーク構造のために対応するハードウェアを独立して組み立てずに、ニューラルネットワークのすべての層のロジック演算を実現することができ、ハードウェアリソースを大幅に節約し、ハードウェアのリソース使用率を効果的に向上させる。
【００２２】
以下の明細書に本開示の他の特徴及び利点を説明し、又は、一部の特徴及び利点は明細書で推定又は疑問なく決定でき、又は本開示を実施する上記技術によって理解できる。
【００２３】
本発明の上記目的、特徴及び利点をより明確にするために、以下、添付の図面を参照しながら、好適な実施例を詳しく説明する。
【図面の簡単な説明】
【００２４】
本発明の具体的な実施形態又は従来技術の技術案をより明確に説明するために、以下に具体的な実施形態又は従来技術の記述において用いられる必要な図面について簡単に説明を行うが、当然ながら、以下に記載する図面は単に本発明の実施形態の一例であって、当業者であれば、創造的な労力を要することなく、これらの図面に基づいて他の図面に想到しうる。
【００２５】
【図１】図１は本発明の実施例に係る電子装置の構造模式図である。
【図２】図２は本発明の実施例に係る演算装置の構造模式図である。
【図３】図３は本発明の実施例に係る量子化操作の模式図である。
【図４】図４は本発明の実施例に係る演算実行設備の構造模式図である。
【図５】図５は本発明の実施例に係る演算実行設備の畳み込み操作の模式図である。
【図６】図６は本発明の実施例に係る演算実行設備の逆畳み込み操作の模式図である。
【図７】図７は本発明の実施例に係る演算実行設備の全結合操作の模式図である。
【図８】図８は本発明の実施例に係る演算実行設備の量子化操作の模式図である。
【図９】図９は本発明の実施例に係る演算実行方法のフローチャートである。
【発明を実施するための形態】
【００２６】
本発明の実施例の目的、技術案及び利点をより明確にするために、以下、図面を参照しながら、本発明の技術案を明確且つ完全に説明し、無論、説明される実施例は本発明の実施例の一部であって、実施例のすべてではない。本発明の実施例に基づき、当業者が進歩性のある労働を必要とせずに得られる他の実施例は、いずれも本発明の保護範囲に属する。
【００２７】
従来技術は、ハードウェアを用いてニューラルネットワークを実現するとき、異なるニューラルネットワーク構造にいずれもハードウェアを独立して組み立てる必要があるので、より大きなハードウェアリソースを消費する必要があり、且つ演算に関与するネットワーク構造におけるハードウェアのみが応用され、演算に関与しないネットワーク構造に対応するハードウェアがアイドル状態になるため、ハードウェアの使用率が低下してしまう。この問題を解決するために、本発明の実施例は、演算装置、演算実行設備及び演算実行方法を提供する。該技術は、ニューラルネットワークのハードウェア実現に応用されることができる。以下、本発明の実施例を詳しく説明する。
【００２８】
実施例１
【００２９】
まず、図１を参照しながら、本発明の実施例の演算装置、演算実行設備及び演算実行方法を実現するための電子装置１００の例を説明する。
【００３０】
図１において電子装置の構造模式図を示す。電子装置１００は、１つ又は複数のプロセッサ１０２、１つ又は複数の記憶装置１０４、入力装置１０６、出力装置１０８及び画像収集装置１１０を含み、これらの部品はバスシステム１１２及び／又は他の形態の接続機構（図示せず）によって互いに接続される。ただし、図１に示す電子装置１００の部品及び構造は例示的なものであって、制限的なものではなく、必要に応じて、前記電子装置は他の部品及び構造を有してもよい。
【００３１】
前記プロセッサ１０２はデジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックアレイ（ＰＬＡ）、特定用途向け集積回路ＡＳＩＣのうちの少なくとも１つのハードウェア形態で実現されてもよい。前記プロセッサ１０２は、中央処理装置（ＣＰＵ）又はデータ処理能力及び／又は命令実行能力を有する他の形態の処理装置のうちの１つ又は複数の組み合わせであってもよく、且つ前記電子装置１００における他の部品を制御して期待される機能を実行させることができる。
【００３２】
前記記憶装置１０４は、１つ又は複数のコンピュータプログラム製品を含んでもよい。前記コンピュータプログラム製品は、様々な形態のコンピュータで読み取り可能な記憶媒体、例えば揮発性メモリ及び／又は不揮発性メモリを含んでもよい。前記揮発性メモリは、例えばランダムアクセスメモリ（ＲＡＭ）及び／又はキャッシュ（ｃａｃｈｅ）等を含んでもよい。前記不揮発性メモリは、例えば読み出し専用メモリ（ＲＯＭ）、ハードディスク、フラッシュメモリ等を含んでもよい。前記コンピュータで読み取り可能な記憶媒体において、１つ又は複数のコンピュータプログラム命令が記憶されてもよい。プロセッサ１０２は、前記プログラム命令を実行することにより、以下に記載の本発明の実施例における（プロセッサで実現される）クライアント機能及び／又は期待される他の機能を実現することができる。前記コンピュータで読み取り可能な記憶媒体に更に様々なアプリケーション及び様々なデータ、例えば前記アプリケーションが使用する及び／又は発生した様々なデータ等が記憶されてもよい。
【００３３】
前記入力装置１０６は、ユーザーが命令を入力するための装置であってもよく、且つキーボード、マウス、マイクロフォン及びタッチパネル等のうちの１つ又は複数を含んでもよい。
【００３４】
前記出力装置１０８は、外部（例えば、ユーザー）に様々な情報（例えば、画像又は音声）を出力することができ、且つディスプレイ、スピーカー等のうちの１つ又は複数を含んでもよい。
【００３５】
他の部品の使用のために、前記画像収集装置１１０は、ユーザーの期待される画像（例えば写真、ビデオ等）を撮影して、撮影された画像を前記記憶装置１０４に記憶することができる。
【００３６】
例示的に、本発明の実施例に係る演算装置、演算実行設備及び演算実行方法を実現するための例示的な電子装置はビデオカメラ、スナップショット装置、顔認識端末、コンピュータ等のインテリジェント端末として実現されてもよい。
【００３７】
実施例２
【００３８】
本実施例は、マルチニューラルネットワークアーキテクチャを実現することができる演算装置を提供する。該マルチニューラルネットワークは、複数の機能を有し、複数の計算ロジックを実現することができる。該演算装置は、複数の機能演算モジュールを含む。機能演算モジュールは、スプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールのうちの少なくとも１つを含んでもよい。つまり、演算装置は、スプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールのうちの複数のモジュールを組み合わせてなってもよい。モジュールの組み合わせ形態及びモジュール同士の接続関係が様々であり、実際の必要に応じて、具体的且つ柔軟に設定できる。
【００３９】
複数の機能演算モジュールを組み合わせることで、複数の演算パスを連通して形成することができる。それぞれの演算パスは１つの計算ロジックを実現することに用いられる。計算ロジックは、畳み込み操作、逆畳み込み操作、プーリング操作、量子化操作及び全結合操作のうちの少なくとも１つを含む。実際の応用において、同じ機能モジュールを組み合わせてなる複数の演算パスであっても、モジュール動作パラメータが異なり、及び／又はモジュール接続関係が異なるため、異なる演算効果を実現することができ、異なる演算パスに属すると見なされてもよい。
【００４０】
本発明の実施例に係る上記演算装置は、スプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュール等の複数の機能演算モジュールを含む。複数の機能演算モジュールは、柔軟的な組み合わせる方式で、複数の演算パスを連通して形成することができ、それにより対応する計算ロジックを実現する。該演算装置において、それぞれのネットワーク構造毎に対応するハードウェア構造（具体的にロジック回路を備えるコンピューティングハードウェア構造であり、以下にいずれもハードウェアと略称される）を独立して構築する必要がなく、必要に応じて、演算パスを直接選択すればよい。このような多機能を多重する演算装置は、ハードウェアリソースを非常に効果的に節約する。
【００４１】
実際の応用において、演算装置はＦＰＧＡ又はＡＳＩＣ等のハードウェアで実現されてもよく、対応する機能演算を実現するために、各機能演算モジュールは具体的に加算器、乗算器等の様々なロジック回路で構成されてもよい。理解しやすくするために、まず上記機能演算モジュールの基本機能を簡単に説明する。
【００４２】
スプライスモジュール（ｃｏｎｃａｔモジュールとも称される）はチャネルのスプライスを実現することに用いられる。具体的に、チャネル次元における入力特徴マップのスプライスを実現することができる。ニューラルネットワークの入力が多次元特徴マップであるとき、スプライスモジュールは、メモリアドレッシング等の操作によって多次元テンソルデータ（例えば、長さ、幅及びチャネルの３つの次元を含むテンソルデータ）を検索して、チャネル次元においてテンソルデータに対してスプライス操作を行った後、所定数のチャネルを有する元の特徴マップをより多くのチャネルの特徴マップに変換することができ、それによりネットワークの計算性能を向上させる。
【００４３】
拡張モジュール（ｕｎｐｏｏｌｉｎｇモジュールとも称される）は元の特徴マップの拡張を実現することに用いられる。拡張モジュールは、予め設定された拡張パラメータに基づいて元の特徴マップの長さ・幅を拡張することができる。例えば、拡張パラメータ（ｕｎｐｏｏｌｉｎｇｓｉｚｅ）が２＊２である場合、拡張モジュールは元の特徴マップの長さ・幅をそれぞれ元の長さ・幅の二倍に拡張することができ、それにより画像拡張機能を実現し、異なるサイズの特徴マップのスプライス操作にも役立つ。
【００４４】
特徴マッピングを実現するために、畳み込みモジュール（ｃｏｎｖｏｌｕｔｉｏｎモジュールとも称される）は設定された畳み込みカーネルに応じて特徴データに対して畳み込み操作を行うことに用いられる。
【００４５】
パラメータのビット数を減少させ、パラメータ量を減少させ、ニューラルネットワークの量子化圧縮を実現するために、量子化モジュール（ｑｕａｎｔｉｚｉｎｇモジュールとも称される）は、設定された量子化パラメータ（例えばＴ閾値パラメータ）に応じて特徴データに対して量子化操作を行うことに用いられてもよい。
【００４６】
無論、具体的な応用において、機能演算モジュールは更に逆畳み込みモジュール、プーリングモジュール又は全結合モジュール等を含んでもよい。復元作用を実現するように、逆畳み込みモジュール（ｄｅｃｏｎｖｏｌｕｔｉｏｎモジュールとも称される）は畳み込み操作を行った特徴マップの拡張を実現することに用いられてもよい。プーリングモジュールは、データの次元を低減させ、主な特徴を保持するとともに、パラメータを減少させることに用いられてもよく、同時に、並進不変性、回転不変性、スケール不変性等のデータ不変性を実現することもできる。全結合モジュールは、多次元情報の整合、抽出された特徴の分類に用いられてもよい。
【００４７】
本実施例において、それぞれの機能演算モジュールは１つ又は複数の演算タイプに対応する。演算タイプは、スプライス演算、拡張演算、畳み込み演算、プーリング演算、量子化演算、非線形演算又は全結合演算を含む。具体的に実施するとき、スプライス演算はスプライスモジュールを用いて実現されてもよく、拡張演算は拡張モジュールを用いて実現されてもよく、畳み込み演算は畳み込みモジュールを用いて実現されてもよく、プーリング演算は、一実施形態において、プーリングモジュールを用いて実現されてもよく、具体的に、畳み込み操作の後で、平均／最大プーリング操作を行ってもよく、別の実施形態において、畳み込みモジュールを用いて実現されてもよく、具体的に、プーリングモジュールに代えてストライド（ｓｔｒｉｄｅ）を持つ畳み込みモジュールを使用してもよく、そして、プーリングモジュールなしに畳み込み＋プーリング操作を実現することができる。量子化演算は量子化モジュールを用いて実現されてもよく、非線形演算は、一実施形態において、非線形活性化関数を用いて実現されてもよく、別の実施形態において、量子化モジュールを用いて実現されてもよく、具体的に、当該量子化モジュールは浮動小数点数値をマルチビット値に量子化することで、非線形活性化関数を代替する。全結合演算は、一実施形態において、全結合モジュールを用いて実現されてもよく、別の実施形態において、１＊１畳み込みカーネルサイズの畳み込みモジュールを用いて実現されてもよい。
【００４８】
演算装置は複数の機能演算モジュールの組み合わせを含んでもよく、一実施形態において、図２に示す演算装置の構造模式図を参照してもよい。該構造模式図においてマルチニューラルネットワークアーキテクチャを直感的に示す。図２から分かるように、該演算装置にスプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールが含まれる。該マルチニューラルネットワークアーキテクチャの演算過程において、スプライスモジュール、拡張モジュール、畳み込みモジュール及び量子化モジュールという複数の機能演算モジュールの組み合わせ及びモジュールパラメータの設定によって、該マルチニューラルネットワークアーキテクチャは、複数のネットワーク構造を実現することができ、それぞれのネットワーク構造が１つの演算パスに対応し、異なる計算ロジックを実現することができる。ただし、図２に簡単に示すが、実際の応用において、機能演算モジュールの種類、数及び接続関係を柔軟に設定することができる。
【００４９】
マルチニューラルネットワークアーキテクチャが多層演算を実行するとき、異なる層演算に必要な機能演算モジュールも異なり、つまり、異なる演算パスを用いて演算することにより、異なる計算ロジックを実現することができると理解される。
【００５０】
様々なニューラルネットワークモデルは、基本的にスプライス演算及び畳み込み演算を利用する必要があるため、一実施形態において、すべての演算パスにはいずれも少なくともスプライスモジュール及び畳み込みモジュールが含まれる。これを基に、本実施例は以下の複数の演算パスの例を挙げた。
【００５１】
例１、第一演算パスには更に拡張モジュールが含まれ、逆畳み込み操作を実現するために、畳み込みモジュールが拡張モジュールの後に接続される。
【００５２】
例２、全結合操作を実現するために、第二演算パスにおいて、畳み込みモジュールは１＊１畳み込みカーネルサイズの畳み込み層を含む。
【００５３】
例３、第三演算パスには更に量子化モジュールが含まれ、且つ量子化操作を実現するために、量子化モジュールが第三演算パスの末端に設置される。
【００５４】
例４、畳み込み操作を実現するために、第四演算パスにはスプライスモジュール及び畳み込みモジュールのみが含まれる。
【００５５】
ただし、以上に典型的な計算ロジックを実現するための簡単な演算パスのみを提供するが、実際の応用において、演算パスの選択は、実行する計算ロジック及びマルチニューラルネットワークに含まれる機能演算モジュールタイプに関わり、複数の演算パスの実現形態を有してもよく、ここで制限的なものと見なされるべきではない。
【００５６】
ハードウェアのリソース使用率を更に向上させるために、本実施例に係るマルチニューラルネットワークアーキテクチャは更に以下の形態を用いた。
【００５７】
形態１、マルチニューラルネットワークアーキテクチャにプーリングモジュールを設定する必要がなく、つまり、畳み込みモジュールの後に平均／最大プーリングモジュールを更に接続する必要がなく、ストライドを持つ畳み込みを直接用いれば、畳み込み演算及びプーリング演算を同時に実現することができる。具体的に、本実施例に係る畳み込みモジュールは、ストライドを持つ畳み込み層を含む。畳み込み層のストライドが１である場合、畳み込みモジュールは畳み込み演算を実現することに用いられ、畳み込み層のストライドが１ではない場合、畳み込みモジュールは畳み込み演算及びプーリング演算を同時に実現することに用いられる。このような形態によって、畳み込みモジュールを多重化することができ、プーリングモジュールを組み立てる必要がなく、ハードウェアリソースを節約するとともに、ハードウェアのリソース使用率も向上させる。
【００５８】
従来技術におけるニューラルネットワークは、畳み込み操作を行ってからプーリング操作を行う必要があり、計算を実現するために、各項の操作はいずれも常にメモリにアクセスしてデータを読み取る必要がある。本形態において、ストライドを持つ畳み込み層を用いて、畳み込み操作及びプーリング操作を１つの畳み込み過程に統合して完了することができ、畳み込みモジュールのハードウェアのリソース使用率を向上させるとともに、メモリのアクセス量及び計算量を効率よく減少させることもできる。
【００５９】
形態２、マルチニューラルネットワークアーキテクチャには、非線形活性化関数を設定する必要がなく、つまり、独立した非線形活性化操作を行わずに、量子化モジュールを直接用いれば実現できる。具体的に、本実施例に係る量子化モジュールは浮動小数点数値を下位ビット値に量子化することで、パラメータ圧縮及び非線形演算を実現することができる。下位ビット値がより下位であり、具体的にｋ−ｂｉｔで示してもよく、必要に応じて、ｋ値を柔軟に設定してもよく、つまり、本実施例に係る量子化モジュールはｋ−ｂｉｔ量子化で非線形活性化関数を代替してもよい。一般的な非線形関数は、例えばｓｉｇｍｏｉｄ関数である１／（（１＋ｅ＾（−ｘ）））、ｒｅｌｕ関数であるｆ（ｘ）＝ｍａｘ（ｘ、０）等がある。非線形関数の導入によって、ネットワークがより高い汎化能力を有する。ｒｅｌｕ関数を例とし、ニューラルネットワークにおける一部のニューラルの出力を０とすることができ、従って、ネットワークスパース性を発生させ、オーバーフィッティングをある程度で緩和するとともに、実際のニューラル活性化モデルにも更に接近する。従来のニューラルネットワークモデルは、最後にさらなる非線形活性化操作を導入する必要があるが、本形態において、量子化モジュールの量子化操作を直接利用してニューラルネットワークの非線形を実現し、ネットワークパラメータを圧縮する上で、対応する非線形能力及び精度を維持することもできる。
【００６０】
理解しやすくするために、図３に量子化操作の模式図を示す。該量子化操作は、主に量子化モジュールで実現され、現在のネットワーク構造における浮動小数点数値を入力するとき、まず浮動小数点数値の最大値及び最小値を記憶し、次に各浮動小数点数値をｋ−ｂｉｔ整数で示す必要があり、必要に応じて、ｋ値を予め設定してもよい。実際の応用において、ｋ−ｂｉｔがより下位のビット値を示してもよい。図３には上記形態を用いて量子化演算を行ってｋ−ｂｉｔで示す実数値を取得し、更に量子化最大値及び量子化最小値を明確に示す。例えば、ｋ＝８と仮定する場合、浮動小数点数値の最大値及び最小値からなる数値範囲を空間線形形態で２５６セグメントに分割し、各セグメントに対して唯一の８−ｂｉｔ整数で該セグメント内の実数値を示す。例えば、（−３．０、６．０）区間内において、バイト０が−３．０を示し、バイト２５５が６．０を示し、このように類推して、バイト１２８が１．５を示し、従ってｋ−ｂｉｔの低ビット幅の出力又は高ビット幅の出力を得る。
【００６１】
本形態における量子化モジュールによって、従来の非線形活性化関数を効率よく代替するために、量子化操作を実現するとき、ニューラルネットワークの圧縮を完了できるだけでなく、更に非線形を導入することもでき、量子化モジュールのハードウェアのリソース使用率を向上させる。
【００６２】
形態３、マルチニューラルネットワークアーキテクチャにおいて逆畳み込み（転置畳み込み）モジュールを独立して設定する必要とせず、拡張モジュールの後に畳み込みモジュールを接続することで実現してもよい。従来技術において、畳み込み操作は多くのニューラルネットワーク構造の常用操作として、完全畳み込みネットワーク等のネットワーク構造において逆畳み込み操作を行う必要がある可能性があるため、更に逆畳み込みモジュールを独立して組み立てる必要があり、畳み込みモジュールを多重化することができない。ところが、本形態において、拡張モジュールの後に畳み込みモジュールを接続して逆畳み込み操作を実現することができる。つまり、拡張操作形態で逆畳み込み操作を代替することにより、該形態において、畳み込みモジュールを多重化することができ、ハードウェアのリソース使用率を効率よく向上させる。
【００６３】
形態４、マルチニューラルネットワークアーキテクチャにおいて全結合モジュールを独立して設定する必要がなく、１＊１畳み込みカーネルサイズの畳み込みモジュールを用いれば全結合操作を実現することができる。このような形態によって、畳み込みモジュールを多重化することができるとともに、ハードウェアのリソース使用率を向上させ、マルチニューラルネットワークアーキテクチャも更に簡素化する。
【００６４】
以上の４つの形態によって、マルチニューラルネットワークはハードウェアリソースを効率よく節約することができ、畳み込みモジュール、量子化モジュール等の従来の機能演算モジュールは複数の演算操作時に多重化されてもよく、ハードウェアのリソース使用率を効果的に向上させる。
【００６５】
実施例３
【００６６】
実施例２に係る演算装置に基づき、本実施例は演算実行設備を提供する。該演算実行設備は、コントローラ、メモリ及び実施例２における演算装置を含む。メモリは予め設定された単一命令セットを記憶することに用いられる。単一命令セットは、演算装置が多層演算を行う際に各層演算に対応する単一命令を含む。それぞれの単一命令はモジュール選択パラメータ及びモジュール動作パラメータを含む。
【００６７】
無論、メモリには更に演算装置における各機能演算モジュールの演算時に必要なデータが記憶される。例えば、畳み込みモジュールに必要な重みデータ、畳み込みカーネルパラメータ、量子化モジュールに必要な閾値データ等の各機能演算モジュールに対応するパラメータが記憶される。ここで詳細な説明は省略する。
【００６８】
コントローラはメモリから演算装置に必要な現在層演算に対応する現在の単一命令を読み取って、現在の単一命令に含まれるモジュール選択パラメータ及びモジュール動作パラメータを解析することにより、現在の単一命令に対応する演算パスを決定することに用いられる。コントローラは更に演算装置に制御信号を送信することにより、演算装置を現在の単一命令に対応する演算パスに連通することに用いられる。具体的に、演算装置には単一命令に対応する演算パスを形成させるために、コントローラは命令デコーダによってモジュール選択パラメータ及びモジュール動作パラメータを持っている単一命令を解析することにより、制御信号を生成することができる。
【００６９】
ニューラルネットワークは、実行中に多層演算を実行する必要がある。従来のニューラルネットワークにおいて、異なる層演算のために、異なるネットワーク構造を構築する必要がある可能性があるため、ハードウェアのリソース消費量が極めて大きい。本実施例に係る演算装置は、多機能多重化をサポートすることができ、単一命令に基づいて演算装置の演算パスを決定すれば、ニューラルネットワークのすべての層演算はいずれも該演算装置を用いて実現されてもよい。各層演算のために、対応するハードウェア構造を独立して構築する必要とせず、組み合わせ形態で該演算装置における既存のコンピューティングハードウェアを共有することができるので、コンピューティングハードウェアリソースを大幅に節約し、ハードウェアの使用率を向上させる。
【００７０】
演算装置は、コントローラの制御で現在の単一命令に対応する演算パスを連通し、現在の単一命令に対応する演算パスを利用して演算装置の現在層演算における入力データを演算処理し、現在層演算の出力データを生成する。現在層演算の入力データは演算装置が前層演算時に取得した出力データであり、現在層が第一層である場合、第一層演算の入力データが処理対象画像である。本実施例に係る演算装置は実行装置（Ｅｘｅｃｕｔｉｏｎ  Ｕｎｉｔ、ＥＵ）とも称されてもよい。入力データがＥＵを通過すれば、ニューラルネットワークの実行中の１つのネットワーク構造層の演算を完了することができる。すべての層は同一ＥＵを繰り返し利用すれば、ニューラルネットワークのすべての演算過程を実現することができる。各層演算時に、対応する単一命令を読み取って、ＥＵを該層演算の実現可能なネットワーク構造にコンパイルし、入力データが該ネットワーク構造で形成された演算パスを流れれば、出力データを取得することができる。該出力データは更に次の層の入力データとして、ＥＵの入力側に改めて入力されてもよい。このように繰り返して実行すれば、すべての層の演算を実現して、最終結果を取得することができる。このような形態によって、従来技術におけるニューラルネットワークを実現するためのハードウェア装置において、複数のＥＵを用いて異なる層演算を実行する際に、ハードウェアリソースを浪費する恐れがあるという問題を効率よく解決した。
【００７１】
本発明の実施例に係る上記演算実行設備において、コントローラは、演算装置に必要な現在層演算に対応する現在の単一命令を解析することにより、演算装置を制御して現在の単一命令に対応する演算パスを連通させることができ、それにより現在層の演算処理を行う。このような形態は、単一命令に基づいて同一演算装置を制御して異なるネットワーク構造をコンパイル形成させれば、ニューラルネットワークのすべての層のロジック演算を実現することができる。異なるネットワーク構造のために対応するコンピューティングハードウェアを独立して組み立てる必要とせず、コンピューティングハードウェアリソースを大幅に節約し、ハードウェアのリソース使用率を効果的に向上させる。
【００７２】
具体的に実施するとき、単一命令にパラメータリストを持っており、パラメータリストにモジュール選択パラメータ及びモジュール動作パラメータが１つずつ示される。演算装置が各層演算を実行するとき、対応する単一命令を解析すれば、必要な機能演算モジュール及びモジュール動作パラメータを決定することができる。
【００７３】
理解しやすくするために、ＣＯＮＶ［ＬＩＮＥＳ＝０、ＫＥＲＮＥＬＳＩＺＥ１＝３、ＫＥＲＮＥＬＳＩＺＥ２＝３、ＳＴＲＩＤＥ＝２、ＱＵＡＮＴＩＺＩＮＧ＝１、ＱＵＡＮＴＩＺＩＮＧＢＩＴ＝ｋ、ＯＵＴＰＵＴＣＨＡＮＥＬ＝ｎ、ＵＮＰＯＯＬＳＩＺＥ＝２］の単一命令を例として説明し、コントローラが該命令を読み取ると、該単一命令に対応するマルチニューラルネットワークアーキテクチャの演算パスを決定することができる。
【００７４】
具体的に、ＬＩＮＥＳによって逆畳み込み操作又は畳み込み操作を実行するかを選択することができ、それにより対応する機能演算モジュールを決定する。例えば、ＬＩＮＥＳ＝０が逆畳み込み操作に対応するため、拡張モジュールによって拡張操作を実行して更に逆畳み込み操作に等価するように、データを拡張モジュールに入力することを選択する。ＫＥＲＮＥＬＳＩＺＥ１及びＫＥＲＮＥＬＳＩＺＥ２がそれぞれ畳み込みカーネルパラメータＮ＊ＭのＮ値及びＭ値であり、Ｎ値及びＭ値が同様であってもよいし、異なってもよい。命令を解析するとき、Ｎ＊Ｍが１＊１に等しいかどうかによって、全結合演算を実現したかどうかを判断することができる。ＵＮＰＯＯＬＳＩＺＥ＝２の場合、拡張モジュールに対応する拡張パラメータを示し、ＵＮＰＯＯＬＳＩＺＥの値に基づいて、該命令に対応する演算パスには拡張モジュールを選んで用いるかどうかを判断することもできる。
【００７５】
ＳＴＲＩＤＥが畳み込みモジュールのストライドを示し、ＳＴＲＩＤＥが１であるかどうかによって、畳み込み操作の後で更にプーリング操作を実行するかどうかを選択することができ、それにより畳み込みモジュールの実行形態を決定する。具体的に、ＳＴＲＩＤＥ＝１の場合、畳み込みモジュールが畳み込み演算のみに対応するが、プーリング演算を行わないことを示す。ＳＴＲＩＤＥ＝２、３、４……の場合、畳み込みモジュールが畳み込み演算の後で更にプーリング演算を行う必要があると示される。
【００７６】
ＱＵＡＮＴＩＺＩＮＧの値によって量子化操作を実行するかどうかを決定することができる。例えば、ＱＵＡＮＴＩＺＩＮＧ＝１は量子化操作を実行する必要があることに対応するが、ＱＵＡＮＴＩＺＩＮＧ＝０は量子化操作を実行する必要がないことに対応する。且つ、ＱＵＡＮＴＩＺＩＮＧＢＩＴ＝ｋにおけるｋ値に基づいて、量子化モジュールは量子化操作を実行するとき、更にｋ−ｂｉｔ量子化形態で非線形活性化関数を代替してもよく、それによりニューラルネットワークに非線形を導入し、ニューラルネットワーク演算の信頼性及びロバスト性を向上させる。
【００７７】
また、ＯＵＴＰＵＴＣＨＡＮＥＬ＝ｎがスプライスモジュールのチャネルパラメータを示す。
【００７８】
本実施例に係る命令は最小命令セット（ｍｉｎｉｍａｌ  ｎｅｕｒａｌ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｅｒ、ＭＮＩＳＣ）であり、つまり、パラメータリストを持っている１つの単一命令に過ぎず、パラメータリストにはＬＩＮＥＳ、ＱＵＡＮＴＩＺＩＮＧ等のモジュール選択パラメータが含まれるだけでなく、更にＫＥＲＮＥＬＳＩＺＥ１、ＫＥＲＮＥＬＳＩＺＥ２、ＳＴＲＩＤＥ、ＱＵＡＮＴＩＺＩＮＧＢＩＴ、ＯＵＴＰＵＴＣＨＡＮＥＬ、ＵＮＰＯＯＬＳＩＺＥ等のモジュール動作パラメータが含まれる。ＳＴＲＩＤＥ、ＫＥＲＮＥＬＳＩＺＥ１及びＫＥＲＮＥＬＳＩＺＥ２等のモジュール動作パラメータの値も対応する機能演算モジュール（例えば、畳み込みモジュール）が実現できる機能を直接決定する。例えば、ＵＮＰＯＯＬＳＩＺＥ等のモジュール動作パラメータは、一方で、モジュール選択特徴意味も有し、つまり、その値に基づいて対応する機能実行モジュールを選択するかどうかを判断することができ、他方で、該機能実行モジュールの動作パラメータも示す。ＵＮＰＯＯＬＳＩＺＥ＝２は、一方で、拡張モジュールを選択することを示し、他方で、該拡張モジュールの動作パラメータが元の特徴マップの長さ・幅を元の長さ・幅の二倍に拡張することを示す。
【００７９】
ただし、以上のパラメータは模式的な説明に過ぎず、実際の応用において、単一命令パラメータを柔軟に定義することができる。例えば、ＬＩＮＥＳ＝０を逆畳み込み操作を必要とするように定義してもよいし、ＬＩＮＥＳ＝１を逆畳み込み操作を必要とするように定義してもよい。無論、他の数値を逆畳み込み操作を必要とするように定義してもよく、コントローラが命令デコーダによって予め定義されたパラメータに基づいて解析するようにすればよく、ここでパラメータの設定を制限しない。
【００８０】
従来技術における各演算操作がいずれも複数の命令を必要とすることに比べて、本実施例に係る最小命令セットは、パラメータを持っている単一命令のような簡単な形態を用いて、コントローラに単一命令に基づいて演算装置に対応するネットワーク構造を決定させることができ、それにより対応する演算操作を実行し、非常に迅速且つ効率的である。単一命令に持っているパラメータが異なって、演算装置に対応する演算パスも異なるため、異なる計算ロジック結果を取得することができる。同一演算装置（つまり、実行装置ＥＵ）はすべての層の演算を実現することができるため、各層演算時にいずれも対応する単一命令を読み取ることができ、単一命令を解析すれば、該層演算のＥＵにおける演算パスを決定することができる。
【００８１】
理解しやすくするために、図４〜図９を参照しながら、本実施例に係る演算実行設備の演算過程を例示的に説明する。
【００８２】
まず、図４に示す演算実行設備の構造模式図を参照する。図４において、演算装置（マルチニューラルネットワークアーキテクチャ）及びメモリ（内部には重みデータＷ  ｄａｔａ、閾値データＢＴ  ｄａｔａ、畳み込みカーネルパラメータ等の各機能演算モジュールに必要なデータが含まれる）を示す。メモリには更にネットワーク構造の複数の単一命令で構成されるセットが記憶され、具体的にメモリにおける命令レジスタに記憶されてもよい。簡単に示すために、図４にコントローラが直接示されない。しかしながら、本質的に、単一命令の解析、各機能演算モジュールの選択、データの読取等はいずれもコントローラにより制御される。また、図４に機能演算モジュールの選択に影響する以下の選択ノード（選択結果はいずれもコントローラが単一命令に持っているパラメータに基づいて決定されるものである）を示す。
【００８３】
選択１、逆畳み込みを行うかどうか
該選択結果は、入力データが拡張モジュールを流れるかどうかによって決定される。本実施例において、拡張モジュールを用いて拡張操作を実行することにより、逆畳み込み操作効果を実現する。具体的に実現するとき、拡張モジュールの後に逆畳み込みモジュールの代わりに畳み込みモジュールを接続してもよい。具体的に、単一命令におけるＬＩＮＥＳ値に基づいて決定されてもよい。
【００８４】
選択２、プーリングを行うかどうか
該選択結果は、畳み込みモジュールが畳み込み演算の後でプーリング演算を行うかどうか、及び畳み込みモジュールの実行中のストライドが１より大きいかどうかによって決定される。具体的に、単一命令におけるＳＴＲＩＤＥ値に基づいて決定されてもよい。
【００８５】
選択３、全結合を行うかどうか
該選択結果は、畳み込みモジュールに１＊１畳み込みカーネルサイズの畳み込み層が含まれるかどうかによって決定される。具体的に、単一命令におけるＫＥＲＮＥＬＳＩＺＥ１値、ＫＥＲＮＥＬＳＩＺＥ２値に基づいて決定されてもよい。
【００８６】
選択４、量子化を行って、ｋｂｉｔに量子化したかどうかを判断する
該選択は、量子化モジュールによって畳み込みモジュールから出力されたデータに対して量子化処理を行って、非線形を導入するかどうかによって決定される。具体的に、単一命令におけるＱＵＡＮＴＩＺＩＮＧ値及びＱＵＡＮＴＩＺＩＮＧＢＩＴ値に基づいて決定されてもよい。
【００８７】
また、図４には更に入力データが演算装置を通過して出力データを取得し、出力データがメモリに記憶されてもよいことを示す。マルチニューラルネットワークアーキテクチャのすべての層演算はいずれも該演算装置を用いてもよいため、該演算装置のある層演算から取得した出力データを次の層演算の入力データとして該演算装置の開始側に更に入力してもよい。
【００８８】
図４を基に、図５に示す演算実行設備の畳み込み操作の模式図を参照する。図５に示すマルチニューラルネットワークアーキテクチャにおいて、畳み込み操作の演算パスがスプライスモジュール及び畳み込みモジュールであり、その後、畳み込みモジュールによって畳み込み結果を直接出力してもよい。ニューラルネットワークの多層演算において、畳み込み層はいずれも図５に示す演算パスを用いて実現されてもよい。畳み込み操作において、選択１の選択結果は、データがスプライスモジュールを通過して畳み込みモジュールに入り、拡張モジュールを選んで用いることがないことである。従って図１における拡張モジュールを灰色背景で塗りつぶし、それにより該モジュールが選択不可能であることを明確に示す。しかしながら、畳み込み操作に関わる一部の演算層は畳み込みの後で更に量子化を行う必要がある可能性があるため、畳み込みモジュールから出力されたデータを量子化モジュールに更に入力することができる。従って、図５における量子化モジュールを点線ボックスで示し、非必須と示され、演算層の必要に応じて、柔軟に選択してもよい。また、単一命令におけるストライドパラメータ（ｓｔｒｉｄｅ）に基づいて、選択２の結果、つまり、畳み込みモジュールは畳み込み演算の後でプーリング演算を行うかどうかを決定することもでき、それにより畳み込み操作及びプーリング操作を連続的に実現する。
【００８９】
それに対応して、図６に演算実行設備の逆畳み込み操作の模式図を示す。図６に示すマルチニューラルネットワークアーキテクチャにおいて、逆畳み込み操作の演算パスはスプライスモジュール、拡張モジュール及び畳み込みモジュールを含んでもよく、その後、畳み込みモジュールによって畳み込み結果を直接出力することができる。逆畳み込み操作において、選択１の選択結果はデータを拡張モジュールによって処理する必要があることであり、従って図６におけるマルチニューラルネットワークアーキテクチャにおいて、畳み込み操作を行うための元のスプライスモジュール（図６の右側部分のスプライスモジュール）を灰色背景で塗りつぶし、該モジュールが選択不可能であることを明確に示す。同様に、図６において、量子化モジュールが非必須であり、演算層の必要に応じて、柔軟に選択してもよい。
【００９０】
図７に演算実行設備の全結合操作の模式図を示す。図７に示すマルチニューラルネットワークアーキテクチャにおいて、全結合操作の演算パスにスプライスモジュール及び畳み込みモジュールが含まれ、全結合操作において、選択３の結果は、畳み込みモジュールの畳み込みカーネルサイズｋｅｒｎｅｌ  ｓｉｚｅ＝１＊１であり、従って１＊１畳み込みカーネルサイズの畳み込みモジュールを選択して全結合操作を完成する。
【００９１】
図８に演算実行設備の量子化操作の模式図を示す。図８に示すマルチニューラルネットワークアーキテクチャにおいて、量子化操作の演算パスにスプライスモジュール、畳み込みモジュール及び量子化モジュールが含まれ、量子化操作において、選択４の結果は、量子化モジュールを含み、且つｋｂｉｔに量子化されることであり、従って量子化パラメータｑｕａｎｔｉｚｉｎｇ  ｂｉｔ＝ｋの量子化モジュールを選択して量子化操作を実現する。
【００９２】
ただし、本実施例に係る図４〜図８にいずれも簡単且つ模式的に説明するが、実際の応用において、異なる演算パスを実現するために、演算装置は機能演算モジュールの種類、数及び接続関係を柔軟に設定することができ、それにより異なる計算ロジックを実現する。
【００９３】
要するに、本実施例に係る演算実行設備は、最小命令セット（パラメータを持つ単一命令）に基づいて、演算装置における演算パスを決定することにより、複数の演算操作を実現することができる。ニューラルネットワークのすべての層演算はいずれも該演算実行設備を用いて実現されてもよく、ハードウェアリソースを大幅に節約し、ハードウェアの使用率を向上させる。
【００９４】
実施例４
【００９５】
実施例３に係る演算実行設備に基づき、本実施例は演算実行方法を提供する。該方法は実施例３における演算実行設備に応用される。図９に演算実行方法のフローチャートを示す。該方法は演算実行設備のコントローラで実行され、具体的に、
演算装置の現在層演算をスタートするとき、現在層演算に対応する現在の単一命令を読み取るステップＳ９０２と、
現在の単一命令のモジュール選択パラメータ及びモジュール動作パラメータを解析し、現在層演算に必要な機能演算モジュール及び機能演算モジュールに対応するモジュール動作パラメータを決定するステップＳ９０４と、
現在層演算に必要な機能演算モジュール及び機能演算モジュールに対応するモジュール動作パラメータに基づいて、演算装置における演算パスを決定し、演算パスは現在層演算に必要な機能演算モジュールを連通してなるステップＳ９０６と、
現在層演算の入力データを演算装置に入力することにより、演算装置が決定された演算パスを利用して入力データを演算処理し、現在層演算の出力データを生成し、現在層演算の入力データが演算装置の前層演算における出力データであり、現在層が第一層である場合、第一層演算の入力データが処理対象画像であるステップＳ９０８と、を含んでもよい。
メモリには、更に各演算層に対応するネットワークパラメータ、具体的に各演算層に対応する機能演算モジュールの演算時に必要なパラメータ、例えば重みデータＷ  ｄａｔａ、閾値データＢＴ  ｄａｔａ、畳み込みカーネルパラメータ等が記憶される。コントローラは現在層演算の入力データを演算装置に入力するとき、更にメモリから現在層のネットワークパラメータを読み取る。コントローラはメモリに記憶される単一命令に基づいて演算装置の演算パスを決定し、次に読み取ったネットワークパラメータと合わせて、入力データを演算処理し、出力データを生成することができると理解される。
【００９６】
本発明の実施例に係る上記演算実行方法において、コントローラは演算装置に必要な現在層演算に対応する現在の単一命令を解析することにより、演算装置を制御して現在の単一命令に対応する演算パスを連通させることができ、それにより現在層の演算処理を行う。このような形態は、単一命令に基づいて同一演算装置を制御して異なるネットワーク構造をコンパイル形成させ、ニューラルネットワークのすべての層のロジック演算を実現することができ、異なるネットワーク構造のために対応するハードウェアを独立して組み立てる必要とせず、ハードウェアリソースを大幅に節約し、ハードウェアのリソース使用率を効果的に向上させる。
【００９７】
当業者であれば、説明を容易且つ簡単にするために、上記方法の具体的な動作過程、及び関わる関連内容（例えば演算パス、単一命令等）は上記実施例における対応過程を参照してもよく、ここで詳細な説明は省略すると明確に理解される。
【００９８】
更に、本実施例はコンピュータで読み取り可能な記憶媒体を提供する。前記コンピュータで読み取り可能な記憶媒体にコンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサで実行されるとき、上記方法実施例に係る情報交換方法のステップを実行する。
【００９９】
本発明の実施例に係る演算装置、演算実行設備及び演算実行方法のコンピュータプログラム製品は、プログラムコードが記憶されるコンピュータで読み取り可能な記憶媒体を含み、前記プログラムコードに含まれる命令は上記方法実施例に記載の方法を実行することに用いられてもよく、具体的な実現は方法実施例を参照してもよく、ここで詳細な説明は省略する。
【０１００】
また、本発明の実施例の説明において、特に明確に規定及び制限しない限り、用語「取付」、「連結」、「接続」を広義に理解すべきであり、例えば、固定接続であってもよいし、取り外し可能な接続又は一体接続であってもよく、機械的接続であってもよいし、電気的接続であってもよく、直接連結であってもよいし、中間媒体による間接連結であってもよく、２つの素子内部の連通であってもよい。当業者であれば、具体的な状況に応じて上記用語の本発明における具体的な意義を理解することができる。
【０１０１】
前記機能はソフトウェア機能ユニットの形態で実現され、且つ独立した製品として販売又は使用されるとき、１つのコンピュータで読み取り可能な記憶媒体に記憶されてもよい。このような理解に基づき、本発明の技術案の本質又は従来技術に貢献する部分又は該技術案の部分はソフトウェア製品の形態で具現されてもよい。該コンピュータソフトウェア製品は、１つの記憶媒体に記憶され、一台のコンピュータ装置（パーソナルコンピュータ、サーバ、又はネットワーク装置等）に本発明の各実施例に記載の方法の全部又は一部のステップを実行させるための複数の命令を含む。上記記憶媒体はＵＳＢメモリ、ポータブルハードディスク、読み出し専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク又は光ディスク等のプログラムコードを記憶できる様々な媒体を含む。
【０１０２】
本発明の説明において、説明すべきなのは、用語「中心」、「上」、「下」、「左」、「右」、「垂直」、「水平」、「内」、「外」等で示す方角又は位置関係は図面に示す方角又は位置関係であり、本発明を説明し且つ説明を簡素化するためのものに過ぎず、指した装置又は素子が特定の方角を有し、特定の方角で構成及び操作しなければならないことを指示又は示唆するためのものではなく、従って本発明を制限するためのものであると理解すべきではない。また、用語「第一」、「第二」、「第三」は説明のためのものに過ぎず、相対的な重要性を指示又は示唆するためのものであると理解すべきではない。
【０１０３】
最後に説明すべきなのは、以上に説明される実施例は、本発明の具体的な実施形態に過ぎず、本発明の技術案を説明するためのものであって、それを制限するためのものではない。本発明の保護範囲はこれに限らない。上記実施例を参照して本発明を詳しく説明したが、当業者であれば、当業者が本発明に開示される技術的範囲内に依然として上記実施例に記載の技術案に対して修正又は容易に想到し得る変更を行い、又はその一部の技術的特徴に対して等価置換を行うことができる。これらの修正、変更又は置換は、対応する技術案の本質を本発明の実施例の技術案の趣旨及び範囲から逸脱することがなく、本発明の保護範囲内に含まれるべきであると理解すべきである。従って、本発明の保護範囲は特許請求の範囲に準じるべきである。
【図１】
2019139747.tif 000003
【図２】
2019139747.tif 000004
【図３】
2019139747.tif 000005
【図４】
2019139747.tif 000006
【図５】
2019139747.tif 000007
【図６】
2019139747.tif 000008
【図７】
2019139747.tif 000009
【図８】
2019139747.tif 000010
【図９】
2019139747.tif 000011