(57)【要約】【課題】ニューラルネットワークにおける入力データの認識または学習に要する時間を容易に取得することを可能とする演算時間算出方法、演算時間算出装置、演算時間算出プログラム及び演算時間算出システムを提供する。【解決手段】ニューラルネットワークを構成する１以上の層の配置を示す情報と、１以上の層のそれぞれにおいて用いられるパラメータ値と、ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得し、取得した配置を示す情報と、パラメータ値と、入力データのサイズとに基づいて、入力データの入力に応じてニューラルネットワークにおいて行われる演算の演算量を算出し、算出した演算量と、取得した処理性能とに基づいて、所定のコンピュータにおいて演算が行われる場合の演算時間を算出する。【選択図】図５
2019032729.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得し、
取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出し、
算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する、
ことを特徴とする演算時間算出方法。
【請求項２】
請求項１において、
前記取得する工程では、前記１以上の層ごとに、各層において行われる演算量の算出に用いられる式を取得し、
前記演算量を算出する工程では、
前記配置を示す情報を参照し、前記１以上の層ごとに、各層の直前に演算が行われる特定の層を特定し、
前記１以上の層ごとに、前記入力データのサイズまたは前記特定の層によって演算が行われた後の前記入力データのサイズと、各層に対応する前記パラメータとを、取得した前記式に代入することにより、前記１以上の層ごとの前記演算量を算出する、
ことを特徴とする演算時間算出方法。
【請求項３】
請求項２において、
前記１以上の層ごとの演算量を算出する工程では、前記１以上の層ごとであって演算の種類ごとに、前記演算量を算出する、
ことを特徴とする演算時間算出方法。      
【請求項４】
請求項１において、
前記演算時間を算出する工程では、算出した前記演算量を前記処理性能で除算することにより、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間の算出を行う、
ことを特徴とする演算時間算出方法。
【請求項５】
請求項１において、
前記取得する工程では、前記演算を行う際に所定のライブラリを用いた場合における前記演算の実行効率を取得し、
前記演算時間を算出する工程では、前記演算量を前記処理性能で除算することにより算出した値を、取得した前記実行効率で除算することにより、前記演算時間の算出を行う、
ことを特徴とする演算時間算出方法。
【請求項６】
請求項１において、
前記演算量を算出する工程では、前記ニューラルネットワークにおいて前記入力データの認識が行われる際の演算量の算出を行う、
ことを特徴とする演算時間算出方法。
【請求項７】
請求項１において、
前記演算量を算出する工程では、前記ニューラルネットワークに対する前記入力データの学習が行われる際の演算量の算出を行う、
ことを特徴とする演算時間算出方法。
【請求項８】
ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得する情報取得部と、
取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出する演算量算出部と、
算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する演算時間算出部と、を有する、
ことを特徴とする演算時間算出装置。
【請求項９】
ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得し、
取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出し、
算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する、
処理をコンピュータに実行させることを特徴とする演算時間算出プログラム。
【請求項１０】
ニューラルネットワークを学習する複数の物理マシンを有し、
前記複数の物理マシンのうちの少なくとも１つは、
前記ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得する情報取得部と、
取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出する演算量算出部と、
算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する演算時間算出部と、を有する、
ことを特徴とする演算時間算出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算時間算出方法、演算時間算出装置、演算時間算出プログラム及び演算時間算出システムに関する。
【背景技術】
【０００２】
近年、画像認識や音声認識等の分野において、ディープラーニング手法が活用されている。ディープラーニング手法は、多層構造のニューラルネットワーク（以下、単にニューラルネットワークとも呼ぶ）に入力データ（例えば、画像データ）を学習させることをよって行われる機械学習の手法である。
【０００３】
このディープラーニング手法を用いることにより、従来の機械学習の手法を用いた場合と比べて、入力データの認識性能を高めることが可能になる（例えば、特許文献１乃至３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２３３０８５号公報
【特許文献２】特開２０１６−２１２６６７号公報
【特許文献３】特開２０１３−２５５３９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、ニューラルネットワークにおける入力データの認識（以下、単に認識とも呼ぶ）やニューラルネットワークに対する入力データの学習（以下、単に学習とも呼ぶ）に要する時間は、入力データのサイズやニューラルネットワークの構造等によって異なる。そのため、例えば、ディープラーニング手法の利用者（以下、単に利用者とも呼ぶ）は、認識や学習を予め行うことによってそれぞれの所要時間を計測する場合がある。
【０００６】
しかしながら、利用者は、この場合、認識や学習を行うための入力データを予め用意する必要がある。また、利用者は、この場合、所要時間の計測を正確に行う必要性から、認識や学習が行われるコンピュータ（ハードウエア）を占有する必要がある。そのため、利用者は、認識や学習の所要時間を容易に取得することができない場合がある。
【０００７】
そこで、一つの側面では、ニューラルネットワークにおける入力データの認識または学習に要する時間を容易に取得することを可能とする演算時間算出方法、演算時間算出装置、演算時間算出プログラム及び演算時間算出システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態の一つの態様によれば、ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得し、取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出し、算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する。
【発明の効果】
【０００９】
一つの側面によれば、ニューラルネットワークにおける入力データの認識または学習に要する時間を容易に取得することを可能とする。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理システム１０の全体構成を示す図である。
【図２】図２は、情報処理装置１のハードウエア構成を説明する図である。
【図３】図３は、情報処理装置１の機能のブロック図である。
【図４】図４は、情報格納領域１３０に記憶された情報のブロック図である。
【図５】図５は、第１の実施の形態の概略について説明するフローチャートである。
【図６】図６は、第１の実施の形態の概略を説明する図である。
【図７】図７は、第１の実施の形態における演算時間算出処理の詳細を説明するフローチャートである。
【図８】図８は、第１の実施の形態における演算時間算出処理の詳細を説明するフローチャートである。
【図９】図９は、第１の実施の形態における演算時間算出処理の詳細を説明するフローチャートである。
【図１０】図１０は、第１の実施の形態における演算時間算出処理の詳細を説明するフローチャートである。
【図１１】図１１は、ニューラルネットワークの具体例について説明する図である。
【図１２】図１２は、ネットワーク情報１３１の具体例を説明する図である。
【図１３】図１３は、パラメータ情報１３２の具体例を説明する図である。
【図１４】図１４は、バッチサイズ情報１３３の具体例を説明する図である。
【図１５】図１５は、入力サイズ情報１３４の具体例を説明する図である。
【図１６】図１６は、演算量情報１３７の具体例を説明する図である。
【発明を実施するための形態】
【００１１】
［情報処理システムの構成］
図１は、情報処理システム１０の全体構成を示す図である。図１に示す情報処理システム１０は、１台以上の物理マシンから構成される情報処理装置１と、記憶装置２と、操作端末３とを含む。図１に示す操作端末３は、操作端末３ａ、３ｂ及び３ｃが含まれている。
【００１２】
情報処理装置１は、例えば、利用者が操作端末３を介して、入力データの認識または学習が行われる際の演算時間を算出する処理（以下、演算時間算出処理とも呼ぶ）を行う旨の指示を行った場合、記憶装置２から演算時間算出処理を行うために必要な情報の取得を行う。そして、情報処理装置１は、取得した情報に基づいて演算時間算出処理を行う。
【００１３】
具体的に、情報処理装置１は、ニューラルネットワーク（例えば、畳み込みニューラルネットワーク）を構成する１以上の層の配置を示す情報（以下、ネットワーク情報とも呼ぶ）と、各層において用いられるパラメータ値（以下、パラメータ情報とも呼ぶ）と、入力データのサイズ（以下、入力サイズ情報とも呼ぶ）とを取得する。また、情報処理装置１は、所定のコンピュータの処理性能（以下、処理性能情報とも呼ぶ）を取得する。
【００１４】
そして、情報処理装置１は、ネットワーク情報と、パラメータ情報と、入力サイズ情報とに基づいて、入力データの入力に応じてニューラルネットワークにおいて行われる演算回数（以下、演算量とも呼ぶ）を算出する。さらに、情報処理装置１は、算出した演算量と、処理性能情報とに基づいて、所定のコンピュータにおいて演算が行われる場合の演算時間を算出する。
【００１５】
すなわち、ニューラルネットワークにおいて認識または学習が行われる場合の演算量は、入力データのサイズやニューラルネットワークの構造（ニューラルネットワークを構成する層の配置やパラメータ値）に基づいて決定される。そのため、情報処理装置１は、これらの情報から、ニューラルネットワークにおいて認識または学習が行われる際の演算量を算出する。そして、情報処理装置１は、算出した演算量を用いて、学習または演算が行われる際の演算時間を算出する。
【００１６】
これにより、情報処理装置１は、ニューラルネットワークにおいて入力データの認識または学習を実際に行うことなく、入力データの認識または学習に要する時間（見積り時間）を容易に取得することが可能になる。
【００１７】
［情報処理装置のハードウエア構成］
次に、情報処理装置１のハードウエア構成について説明する。図２は、情報処理装置１のハードウエア構成を説明する図である。
【００１８】
情報処理装置１を構成する物理マシンのそれぞれは、図２に示すように、プロセッサであるＣＰＵ１０１と、メインメモリ１０２（以下、単にメモリ１０２とも呼ぶ）と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体（ストレージ）１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００１９】
記憶媒体１０４は、記憶媒体１０４内のプログラム格納領域（図示しない）に、演算時間算出処理を行うプログラム１１０を記憶する。
【００２０】
ＣＰＵ１０１は、図２に示すように、記憶媒体１０４からメモリ１０２にロードされたプログラム１１０と協働することによって演算時間算出処理を行う。
【００２１】
記憶媒体１０４は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等であり、演算時間算出処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。
【００２２】
また、外部インターフェース１０３は、ネットワークを介して操作端末３と通信を行う。
【００２３】
［情報処理装置のソフトウエア構成］
次に、情報処理装置１のソフトウエア構成について説明する。図３は、情報処理装置１の機能のブロック図である。図４は、情報格納領域１３０に記憶された情報のブロック図である。
【００２４】
ＣＰＵ１０１は、図３に示すように、プログラム１１０と協働することにより、情報受信部１１１と、情報管理部１１２と、情報取得部１１３と、演算量算出部１１４と、演算時間算出部１１５と、情報送信部１１６として動作する。また、情報格納領域１３０には、図４に示すように、ネットワーク情報１３１と、パラメータ情報１３２と、バッチサイズ情報１３３と、入力サイズ情報１３４と、処理性能情報１３５と、実行効率情報１３６と、演算量情報１３７と、演算量累積情報１３８とが記憶されている。
【００２５】
情報受信部１１１は、利用者が操作端末３に対して入力したネットワーク情報１３１等の各種情報を受信する。
【００２６】
情報管理部１１２は、情報受信部１１１が受信した各種情報を情報格納領域１３０に記憶する。
【００２７】
情報取得部１１３は、演算時間算出処理を開始するタイミングになった場合、情報格納領域１３０に記憶された各種情報のうち、例えば、ネットワーク情報１３１と、パラメータ情報１３２と、入力サイズ情報１３４と、処理性能情報１３５とを取得する。ネットワーク情報１３１は、例えば、ニューラルネットワークを構成する各層の配置を示す情報であり、パラメータ情報１３２は、例えば、ニューラルネットワークを構成する各層において用いられるパラメータ値を示す情報である。また、入力サイズ情報１３４は、例えば、入力データのサイズを示す情報であり、処理性能情報１３５は、例えば、所定のコンピュータに処理性能を示す情報である。
【００２８】
演算量算出部１１４は、例えば、情報取得部１１３が取得したネットワーク情報１３１と、パラメータ情報１３２と、入力サイズ情報１３４とに基づいて、入力データの入力に応じてニューラルネットワークにおいて行われる演算の演算量を算出する。すなわち、演算量算出部１１４は、ニューラルネットワークにおいて入力データの認識が行われる際の演算量、または、ニューラルネットワークにおいて入力データの学習が行われる際の演算量の算出を行う。
【００２９】
具体的に、演算量算出部１１４は、例えば、ニューラルネットワークを構成する層ごとであって演算の種類ごとに演算量の算出を行い、算出した演算量を演算量情報１３７として情報格納領域１３０に記憶する。また、演算量算出部１１４は、例えば、ニューラルネットワークを構成する層ごとであって演算の種類ごとの演算量が算出されるごとに、算出が完了した演算量の累計を演算量累積情報１３８として情報格納領域１３０に記憶する。
【００３０】
演算時間算出部１１５は、演算量算出部１１４が算出した演算量（例えば、演算量情報１３７）と、情報取得部１１３が取得した処理性能情報１３５とに基づいて、所定のコンピュータにおいて認識または学習が行われる場合の演算時間を算出する。
【００３１】
情報送信部１１６は、例えば、演算時間算出部１１５が算出した演算時間を操作端末３に送信する。
【００３２】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図５は、第１の実施の形態の概略について説明するフローチャートである。また、図６は、第１の実施の形態の概略を説明する図である。図６を参照しながら、図５に示す第１の実施の形態の概略について説明を行う。
【００３３】
情報処理装置１は、図５に示すように、処理開始タイミングまで待機する（Ｓ１のＮＯ）。処理開始タイミングは、例えば、利用者が操作端末３を介して演算時間算出処理を開始する旨の入力を行ったタイミングであってよい。
【００３４】
そして、処理開始タイミングになった場合（Ｓ１のＹＥＳ）、情報処理装置１は、図６に示すように、ニューラルネットワークを構成する１以上の層の配置を示すネットワーク情報１３１と、各層において用いられるパラメータ情報１３２と、入力データのサイズを含む入力サイズ情報１３４と、所定のコンピュータの処理性能を示す処理性能情報１３５とを取得する（Ｓ２）。
【００３５】
続いて、情報処理装置１は、図６に示すように、Ｓ２の処理で取得したネットワーク情報１３１と、パラメータ情報１３２と、入力サイズ情報１３４とに基づいて、ニューラルネットワークにおいて行われる演算の演算量を算出する（Ｓ３）。その後、情報処理装置１は、Ｓ３の処理で算出した演算量と、Ｓ２で取得した処理性能情報１３５とに基づいて、所定のコンピュータにおいて入力データによる演算が行われる場合の演算時間を算出する（Ｓ４）。
【００３６】
すなわち、ニューラルネットワークにおいて認識または学習が行われる場合の演算量は、入力データのサイズやニューラルネットワークの構造（ニューラルネットワークを構成する層の配置やパラメータ値）に基づいて決定される。そのため、情報処理装置１は、これらの情報から、ニューラルネットワークにおいて認識または学習が行われる際の演算量を算出する。そして、情報処理装置１は、算出した演算量を用いて、認識または学習が行われる際の演算時間を算出する。
【００３７】
これにより、情報処理装置１は、ニューラルネットワークにおいて入力データの認識または学習を実際に行うことなく、入力データの認識または学習に要する時間（見積り時間）を容易に取得することが可能になる。
【００３８】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図７から図１０は、第１の実施の形態における演算時間算出処理の詳細を説明するフローチャートである。また、図１１から図１６は、第１の実施の形態の詳細を説明する図である。図１１から図１６を参照しながら、図７から図１０に示す第１の実施の形態の詳細について説明を行う。
【００３９】
［ニューラルネットワークの具体例］
初めに、入力データを学習させるニューラルネットワークの具体例について説明を行う。図１１は、ニューラルネットワークの具体例について説明する図である。なお、図１１は、ニューラルネットワークにおいて入力データの認識が行われる場合を説明する図である。
【００４０】
図１１に示すニューラルネットワークは、１番目のＣｏｎｖｏｌｕｔｉｏｎ  ｌａｙｅｒ（以下、ｃｏｎｖ１とも表記する）と、１番目のＰｏｏｌｉｎｇ  ｌａｙｅｒ（以下、ｐｏｏｌ１とも表記する）と、２番目のＣｏｎｖｏｌｕｔｉｏｎ  ｌａｙｅｒ（以下、ｃｏｎｖ２とも表記する）とを含んでいる。また、図１１に示すニューラルネットワークは、２番目のＰｏｏｌｉｎｇ  ｌａｙｅｒ（以下、ｐｏｏｌ２とも表記する）と、１番目のＦｕｌｌｙ−ｃｏｎｎｅｃｔ  ｌａｙｅｒ（以下、ｆｃ１とも表記する）と、２番目のＦｕｌｌｙ−ｃｏｎｎｅｃｔ  ｌａｙｅｒ（以下、ｆｃ２とも表記する）とから構成されている。
【００４１】
具体的に、図１１に示すニューラルネットワークにおいてデータＤＴ０（ニューラルネットワークに対する入力データ）の学習が行われる場合、ｃｏｎｖ１は、データＤＴ０に対して畳み込み演算を行うことにより、出力データとしてデータＤＴ１を出力する。そして、ｐｏｏｌ１は、データＤＴ１の特徴の選別や集約を行うことにより、出力データとしてデータＤＴ２を出力する。
【００４２】
続いて、ｃｏｎｖ２は、データＤＴ２に対して畳み込み演算を行うことにより、出力データとしてデータＤＴ３を出力する。そして、ｐｏｏｌ２は、データＤＴ３の特徴の選別や集約を行うことにより、出力データとしてデータＤＴ４を出力する。
【００４３】
その後、ｆｃ１は、活性化関数を用いることによってデータＤＴ４を集約することにより、出力データとしてデータＤＴ５を出力する。そして、ｆｃ２は、活性化関数を用いることによってデータＤＴ５を集約することにより、出力データとしてデータＤＴ６を出力する。
【００４４】
なお、ニューラルネットワークに対する入力データの学習では、入力データの認識において実際に出力された出力データ（例えば、データＤＴ６）と、出力データとして期待されていたデータとの差分に基づき、ｆｃ２からＣｏｎｖ１までの各層を連結するネットワークの全ての重みの調整が行われる。
【００４５】
［演算時間算出処理の詳細のフローチャート］
次に、第１の実施の形態における演算時間算出処理の詳細のフローチャートについて説明を行う。図７から図１０は、第１の実施の形態における演算時間算出処理の詳細を説明するフローチャートである。
【００４６】
［情報記憶処理］
初めに、演算時間算出処理のうち、入力データの演算を行うために必要な情報を情報格納領域１３０に記憶する処理（以下、情報記憶処理）について説明を行う。図７は、情報記憶処理を説明するフローチャートである。
【００４７】
情報処理装置１の情報受信部１１１は、図７に示すように、例えば、利用者が操作端末３を介して送信した各種情報を受信するまで待機する（Ｓ１１のＮＯ）。具体的に、情報受信部１１１は、ネットワーク情報１３１、パラメータ情報１３２、バッチサイズ情報１３３、入力サイズ情報１３４、処理性能情報１３５及び実行効率情報１３６のいずれかを受信するまで待機する。なお、バッチサイズ情報１３３は、演算を同時に行うことが可能な入力データのデータ数を示す情報であり、実行効率情報１３６は、入力データの演算を行う際に所定のライブラリを用いた場合における演算の実行効率を示す情報である。また、ライブラリは、入力データの認識または学習が行われる際に種々の目的に応じて実行されるプログラム群である。そのため、実行効率情報１３６が示す値は、入力データの演算を行う際に用いられるライブラリの種類に応じて決定される。
【００４８】
そして、各種情報を受信した場合（Ｓ１１のＹＥＳ）、情報処理装置１の情報管理部１１２は、Ｓ１１の処理で受信した各種情報を情報格納領域１３０に記憶する（Ｓ１２）。以下、ネットワーク情報１３１、パラメータ情報１３２、バッチサイズ情報１３３及び入力サイズ情報１３４の具体例について説明を行う。
【００４９】
［ネットワーク情報の具体例］
初めに、ネットワーク情報１３１の具体例について説明を行う。図１２は、ネットワーク情報１３１の具体例を説明する図である。
【００５０】
図１２に示すネットワーク情報１３１は、ネットワーク情報１３１に含まれる各情報を識別する「Ｎｏ」と、各層の識別情報が設定される「ｌａｙｅｒ」と、各層の種類が設定される「ｔｙｐｅ」と、各層の直前に演算を行う層の識別情報が設定される「ｂｏｔｔｏｍ」とを項目として有する。なお、図１２から図１６に示す例において、「ｌａｙｅｒ」が「ｍｎｉｓｔ」である情報は、ニューラルネットワークに対して入力される入力データに対応する情報であるものとして説明を行う。また、図１２から図１６に示す例において、「ｌａｙｅｒ」が「ｍｎｉｓｔ」である情報以外の情報は、ニューラルネットワークを構成する各層に対応する情報であるものとして説明を行う。
【００５１】
具体的に、図１２に示すネットワーク情報１３１において、「Ｎｏ」が「１」である情報には、「ｌａｙｅｒ」として「ｍｎｉｓｔ」が設定され、「ｔｙｐｅ」として「Ｄａｔａ」が設定され、「ｂｏｔｔｏｍ」として、情報が存在しないことを示す「−」が設定されている。
【００５２】
また、図１２に示すネットワーク情報１３１において、「Ｎｏ」が「２」である情報には、「ｌａｙｅｒ」として「ｃｏｎｖ１」が設定され、「ｔｙｐｅ」として「Ｃｏｎｖｏｌｕｔｉｏｎ」が設定され、「ｂｏｔｔｏｍ」として「ｍｎｉｓｔ」が設定されている。さらに、図１２に示すネットワーク情報１３１において、「Ｎｏ」が「３」である情報には、「ｌａｙｅｒ」として「ｐｏｏｌ１」が設定され、「ｔｙｐｅ」として「Ｐｏｏｌｉｎｇ」が設定され、「ｂｏｔｔｏｍ」として「ｃｏｎｖ１」が設定されている。図１２に含まれる他の情報についての説明は省略する。
【００５３】
［パラメータ情報の具体例］
次に、パラメータ情報１３２の具体例について説明を行う。図１３は、パラメータ情報１３２の具体例を説明する図である。
【００５４】
図１３に示すパラメータ情報１３２は、パラメータ情報１３２に含まれる各情報を識別する「Ｎｏ」と、各層の識別情報が設定される「ｌａｙｅｒ」と、各層で用いられるカーネルのサイズが設定される「ｋｅｒｎｅｌ」と、パッディング数が設定される「ｐａｄ」と、ストライド数が設定される「ｓｔｒｉｄｅ」とを項目として有する。
【００５５】
具体的に、図１３に示すパラメータ情報１３２において、「Ｎｏ」が「１」である情報には、「ｌａｙｅｒ」として「ｍｎｉｓｔ」が設定され、「ｋｅｒｎｅｌ」として「１」が設定され、「ｐａｄ」として「０」が設定され、「ｓｔｒｉｄｅ」として「１」が設定されている。また、図１３に示すパラメータ情報１３２において、「Ｎｏ」が「２」である情報には、「ｌａｙｅｒ」として「ｃｏｎｖ１」が設定され、「ｋｅｒｎｅｌ」として「５」が設定され、「ｐａｄ」として「０」が設定され、「ｓｔｒｉｄｅ」として「１」が設定されている。図１３に含まれる他の情報についての説明は省略する。
【００５６】
［バッチサイズ情報の具体例］
次に、バッチサイズ情報１３３の具体例について説明を行う。図１４は、バッチサイズ情報１３３の具体例を説明する図である。
【００５７】
図１４に示すバッチサイズ情報１３３は、バッチサイズ情報１３３に含まれる各情報を識別する「Ｎｏ」と、各層の識別情報が設定される「ｌａｙｅｒ」と、各層において同時に演算が行われるデータ数が設定される「ｂａｔｃｈ」とを項目として有する。
【００５８】
具体的に、図１４に示すバッチサイズ情報１３３において、「Ｎｏ」が「１」である情報には、「ｌａｙｅｒ」として「ｍｎｉｓｔ」が設定され、「ｂａｔｃｈ」として「６４」が設定されている。また、図１４に示すバッチサイズ情報１３３において、「Ｎｏ」が「２」である情報には、「ｌａｙｅｒ」として「ｃｏｎｖ１」が設定され、「ｂａｔｃｈ」として「６４」が設定されている。図１４に含まれる他の情報については説明を省略する。
【００５９】
［入力サイズ情報の具体例］
次に、入力サイズ情報１３４の具体例について説明を行う。図１５は、入力サイズ情報１３４の具体例を説明する図である。
【００６０】
図１５に示す入力サイズ情報１３４は、入力サイズ情報１３４に含まれる各情報を識別する「Ｎｏ」と、各層の識別情報が設定される「ｌａｙｅｒ」と、各層におけるチャネル数が設定される「ｃｈａｎｎｅｌ」と、入力データの幅のサイズが設定される「ｗｉｄｔｈ」と、入力データの高さのサイズが設定される「ｈｅｉｇｈｔ」とを項目として有する。
【００６１】
具体的に、図１５に示す入力サイズ情報１３４において、「Ｎｏ」が「１」である情報には、「ｌａｙｅｒ」として「ｍｎｉｓｔ」が設定され、「ｃｈａｎｎｅｌ」として「１」が設定され、「ｗｉｄｔｈ」として「２８」が設定され、「ｈｅｉｇｈｔ」として「２８」が設定されている。また、図１５に示す入力サイズ情報１３４において、「Ｎｏ」が「２」である情報には、「ｌａｙｅｒ」として「ｃｏｎｖ１」が設定され、「ｃｈａｎｎｅｌ」として「２０」が設定され、「ｗｉｄｔｈ」として「２４」が設定され、「ｈｅｉｇｈｔ」として「２４」が設定されている。図１５に含まれる他のデータについての説明は省略する。
【００６２】
［演算時間算出処理の詳細］
次に、演算時間算出処理の詳細について説明を行う。図８から図１０は、演算時間算出処理の詳細を説明するフローチャートである。
【００６３】
情報処理装置１の情報取得部１１３は、図８に示すように、処理開始タイミングまで待機する（Ｓ２１のＮＯ）。
【００６４】
そして、処理開始タイミングになった場合（Ｓ２１のＹＥＳ）、情報取得部１１３は、情報格納領域１３０に記憶されたネットワーク情報１３１と、パラメータ情報１３２と、バッチサイズ情報１３３、入力サイズ情報１３４とを取得する（Ｓ２２）。
【００６５】
続いて、情報処理装置１の演算量算出部１１４は、Ｓ２２の処理で取得したネットワーク情報１３１に対応するニューラルネットワークに含まれる層を、例えば、演算が行われる順序が早い順に１つ特定する（Ｓ２３）。具体的に、演算量算出部１１４は、例えば、図１２で説明したネットワーク情報１３１を参照し、「Ｎｏ」に設定された情報が「２」以降である情報（ニューラルネットワークに含まれる各層に対応する情報）を、「Ｎｏ」に設定された情報が小さい順に１つ特定する。
【００６６】
そして、演算量算出部１１４は、Ｓ２３の処理で特定した層の前に演算が行われた層を特定する（Ｓ２４）。具体的に、図１２で説明したネットワーク情報１３１に含まれる情報のうち、Ｓ２３の処理において特定された情報が「ｃｏｎｖ１」に対応する情報（「Ｎｏ」が「２」である情報）であった場合、演算量算出部１１４は、Ｓ２４の処理において、「ｍｎｉｓｔ」に対応する情報（「Ｎｏ」が「１」である情報）を特定する。
【００６７】
次に、演算量算出部１１４は、図９に示すように、Ｓ２３の処理で特定した層において行われる演算の種類を１つ特定する（Ｓ３１）。
【００６８】
そして、演算量算出部１１４は、Ｓ２２の処理で取得したパラメータ情報１３２のうち、Ｓ２３の処理で特定した層に対応するパラメータ情報１３２と、Ｓ２２の処理で取得したバッチサイズ情報１３３のうち、Ｓ２３の処理で特定した層に対応するバッチサイズ情報と、Ｓ２２の処理で取得した入力サイズ情報１３４のうち、Ｓ２３の処理で特定した層に対応する入力サイズ情報１３４とを特定する。さらに、演算量算出部１１４は、特定した情報を、Ｓ３１の処理で特定した演算の種類に対応する式に代入することにより、Ｓ２３の処理で特定した層における演算量のうち、Ｓ３１の処理で特定した演算の種類に対応する演算量を算出する（Ｓ３２）。
【００６９】
なお、Ｓ３１の処理で特定した演算の種類に対応する式は、例えば、利用者によって情報格納領域１３０に予め記憶されるものであってよい。
【００７０】
続いて、演算量算出部１１４は、例えば、Ｓ３２の処理で算出した演算量を、演算量情報１３７の一部として情報格納領域１３０に記憶する（Ｓ３３）。また、演算量算出部１１４は、例えば、Ｓ３２の処理で算出した演算量の累計を、演算量累積情報１３８として情報格納領域１３０に記憶する（Ｓ３４）。
【００７１】
これにより、情報処理装置１は、ニューラルネットワークにおいて入力データの認識または学習が行われる際の演算量を算出することが可能になる。
【００７２】
その後、演算量算出部１１４は、Ｓ３１の処理において全種類の演算を特定しているか否かの判定を行う（Ｓ３５）。
【００７３】
その結果、Ｓ３１の処理において全種類の演算を特定していないと判定した場合（Ｓ３５のＮＯ）、演算量算出部１１４は、Ｓ３１以降の処理を再度行う。
【００７４】
一方、Ｓ３１の処理において全種類の演算を特定していると判定した場合（Ｓ３５のＹＥＳ）、演算量算出部１１４は、図１０に示すように、Ｓ２３の処理においてニューラルネットワークに含まれる全ての層を特定しているか否かの判定を行う（Ｓ４１）。
【００７５】
その結果、Ｓ２３の処理において全ての層を特定していないと判定した場合（Ｓ４１のＮＯ）、演算量算出部１１４は、Ｓ２３以降の処理を再度行う。
【００７６】
一方、Ｓ２３の処理において全ての層を特定していると判定した場合（Ｓ４１のＹＥＳ）、情報処理装置１の演算時間算出部１１５は、Ｓ４２以降の処理を行う。以下、Ｓ２３からＳ４１の処理の具体例について説明を行う。なお、以下、入力データの認識が行われる際の演算時間の算出が行われている場合における具体例について説明を行う。
【００７７】
［Ｓ２３からＳ４１の処理の具体例（１）］
例えば、Ｓ２３の処理において特定された層がＣｏｎｖｏｌｕｔｉｏｎ  ｌａｙｅｒであって、Ｓ３１の処理において特定された演算の種類が加算である場合、演算量算出部１１４は、Ｓ３２の処理において、以下の式（１）及び（２）を用いて演算量の算出を行う。
【００７８】
ｒ＝（ｘ＋２ｐ−ｋ）／Ｓ＋１      ・・・（１）
【００７９】
演算量＝ｒ×ｒ×Ｍ×ｋ×ｋ×Ｎ＋ｒ×ｒ×Ｍ      ・・・（２）
【００８０】
式（１）及び（２）において、ｘは、Ｓ２３の処理において特定された層に対する入力データの幅（高さ）のサイズであり、ｐは、Ｓ２３の処理において特定された層におけるパッディング数であり、ｋは、Ｓ２３の処理において特定された層におけるカーネルサイズであり、Ｓは、Ｓ２３の処理において特定された層におけるフィルタのストライド数である。
【００８１】
また、ｒは、Ｓ２３の処理において特定された層における出力データの幅（高さ）のサイズであり、Ｎは、Ｓ２３の処理において特定された層におけるフィルタのチャネル数であり、Ｍは、Ｓ２３の処理において特定された層における出力データのチャネル数である。
【００８２】
具体的に、図１５で説明した入力サイズ情報１３４における「ｌａｙｅｒ」が「ｃｏｎｖ１」である情報（「Ｎｏ」が「２」である情報）には、「ｃｈａｎｎｅｌ」として「２０」が設定され、「ｗｉｄｔｈ」として「２４」が設定され、「ｈｅｉｇｈｔ」として「２４」が設定されている。また、図１５で説明した入力サイズ情報１３４における「ｌａｙｅｒ」が「ｍｎｉｓｔ」である情報（「Ｎｏ」が「２」である情報の１つ前の情報）には、「ｃｈａｎｎｅｌ」として「１」が設定されている。さらに、図１３で説明したパラメータ情報１３２における「ｌａｙｅｒ」が「ｃｏｎｖ１」である情報（「Ｎｏ」が「２」である情報）には、「ｋｅｒｎｅｌ」として「５」が設定されており、「ｐａｄ」として「０」が設定されており、「ｓｔｒｉｄｅ」として「１」が設定されている。
【００８３】
そのため、演算量算出部１１４は、Ｓ２３の処理において特定された層がｃｏｎｖ１であって、Ｓ３１の処理において特定された演算の種類が加算である場合、式（１）及び（２）におけるｘが２４であり、ｐが０であり、ｋが５であり、Ｓが１であり、ｒが２４であり、Ｎが１であり、Ｍが２０であると特定する。したがって、演算量算出部１１４は、この場合、演算回数（演算量）として「２９９，５２０（回）」を算出する。
【００８４】
さらに、図１４で説明したバッチサイズ情報１３３における「ｌａｙｅｒ」が「ｃｏｎｖ１」である情報（「Ｎｏ」が「２」である情報）には、「ｂａｔｃｈ」として「６４」が設定されている。そのため、演算量算出部１１４は、算出した「２９９，５２０（回）」と「６４」とを乗算して算出した値である「１９，１６９，２８０（回）」を、Ｓ２３の処理において特定された層がｃｏｎｖ１であって、Ｓ３１の処理において特定された演算の種類が加算である場合の演算回数（演算量）として算出する。
【００８５】
その後、演算量算出部１１４は、算出した「１９，１６９，２８０（回）」を演算量情報１３７の一部として情報格納領域１３０に記憶する。以下、演算量情報１３７の具体例について説明を行う。
【００８６】
［演算量情報の具体例］
図１６は、演算量情報１３７の具体例を説明する図である。図１６に示す演算量情報１３７は、演算量情報１３７に含まれる各情報を識別する「Ｎｏ」と、各層の識別情報が設定される「ｌａｙｅｒ」と、加算を行う演算の演算量が設定される「ａｄｄ」と、乗算を行う演算の演算量が設定される「ｍｕｌ」と、比較を行う演算の演算量が設定される「ｃｍｐ」とを項目として有する。
【００８７】
具体的に、Ｓ２３の処理において特定された層がｃｏｎｖ１であって、Ｓ３１の処理において特定された演算の種類が加算である場合の演算回数（演算量）として「１９，１６９，２８０（回）」が算出された場合、演算量算出部１１４は、図１６に示すように、「ｌａｙｅｒ」が「ｃｏｎｖ１」である情報（「Ｎｏ」が「２」である情報）の「ａｄｄ」に、「１９，１６９，２８０（回）」を設定する。図１６に含まれる他の情報についての説明は省略する。
【００８８】
［Ｓ２３からＳ４１の処理の具体例（２）］
続いて、例えば、Ｓ２３の処理において特定された層がＣｏｎｖｏｌｕｔｉｏｎ  ｌａｙｅｒであって、Ｓ３１の処理において特定された演算の種類が乗算である場合、演算量算出部１１４は、Ｓ３２の処理において、以下の式（３）を用いて演算量の算出を行う。
【００８９】
演算量＝ｒ×ｒ×Ｍ×ｋ×ｋ×Ｎ      ・・・（３）
【００９０】
具体的に、演算量算出部１１４は、Ｓ２３の処理において特定された層がｃｏｎｖ１であって、Ｓ３１の処理において特定された演算の種類が乗算である場合、上記の場合と同様に、式（３）におけるｋが５であり、ｒが２４であり、Ｎが１であり、Ｍが２０であると特定する。そのため、演算量算出部１１４は、この場合、演算回数（演算量）として「２８８，０００（回）」を算出する。
【００９１】
さらに、図１４で説明したバッチサイズ情報１３３における「ｌａｙｅｒ」が「ｃｏｎｖ１」である情報（「Ｎｏ」が「２」である情報）には、「ｂａｔｃｈ」として「６４」が設定されている。そのため、演算量算出部１１４は、算出した「２８８，０００（回）」と「６４」とを乗算して算出した値である「１８，４３２，０００（回）」を、Ｓ２３の処理において特定された層がｃｏｎｖ１であって、Ｓ３１の処理において特定された演算の種類が乗算である場合の演算回数（演算量）として算出する。
【００９２】
その後、演算量算出部１１４は、図１６に示すように、「ｌａｙｅｒ」が「ｃｏｎｖ１」である情報（「Ｎｏ」が「２」である情報）の「ｍｕｌ」に、算出した「１８，４３２，０００（回）」を設定する。
【００９３】
［Ｓ２３からＳ４１の処理の具体例（３）］
続いて、例えば、Ｓ２３の処理において特定された層がＰｏｏｌｉｎｇ  ｌａｙｅｒであって、Ｓ３１の処理において特定された演算の種類が比較である場合、演算量算出部１１４は、Ｓ３２の処理において、以下の式（４）を用いて演算量の算出を行う。なお、以下、Ｐｏｏｌｉｎｇ  ｌａｙｅｒにおいてＭＡＸＰｏｏｌｉｎｇが行われるものとして説明を行う。
【００９４】
演算量＝ａ×ａ×Ｃ×ｂ×ｂ      ・・・（４）
【００９５】
式（４）において、ａは、Ｓ２３の処理において特定された層に対する入力データの幅（高さ）のサイズであり、Ｃは、Ｓ２３の処理において特定された層における出力データのチャネル数であり、ｂは、ＭＡＸＰｏｏｌｉｎｇが行われる範囲の幅（高さ）のサイズである。
【００９６】
具体的に、図１５で説明した入力サイズ情報１３４における「ｌａｙｅｒ」が「ｐｏｏｌ１」である情報（「Ｎｏ」が「３」である情報）には、「ｃｈａｎｎｅｌ」として「２０」が設定され、「ｗｉｄｔｈ」として「１２」が設定され、「ｈｅｉｇｈｔ」として「１２」が設定されている。また、図１３で説明したパラメータ情報１３２における「ｌａｙｅｒ」が「ｐｏｏｌ１」である情報（「Ｎｏ」が「３」である情報）には、「ｋｅｒｎｅｌ」として「２」が設定されている。
【００９７】
そのため、演算量算出部１１４は、Ｓ２３の処理において特定された層がｐｏｏｌ１であって、Ｓ３１の処理において特定された演算の種類が比較である場合、式（４）におけるａが１２であり、Ｃが２０であり、ｂが２であると特定する。したがって、演算量算出部１１４は、この場合、演算回数（演算量）として「１１，５２０（回）」を算出する。
【００９８】
さらに、図１４で説明したバッチサイズ情報１３３における「ｌａｙｅｒ」が「ｐｏｏｌ１」である情報（「Ｎｏ」が「３」である情報）には、「ｂａｔｃｈ」として「６４」が設定されている。そのため、演算量算出部１１４は、算出した「１１，５２０（回）」と「６４」とを乗算して算出した値である「７３７，２８０（回）」を、Ｓ２３の処理において特定された層がｐｏｏｌ１であって、Ｓ３１の処理において特定された演算の種類が比較である場合の演算回数（演算量）として算出する。
【００９９】
その後、演算量算出部１１４は、図１６に示すように、「ｌａｙｅｒ」が「ｐｏｏｌ１」である情報（「Ｎｏ」が「３」である情報）の「ｃｍｐ」に、算出した「７３７，２８０（回）」を設定する。
【０１００】
［Ｓ２３からＳ４１の処理の具体例（４）］
続いて、例えば、Ｓ２３の処理において特定された層がＦｕｌｌｙ−ｃｏｎｎｅｃｔ  ｌａｙｅｒであって、Ｓ３１の処理において特定された演算の種類が加算である場合、演算量算出部１１４は、Ｓ３２の処理において、以下の式（５）を用いて演算量の算出を行う。
【０１０１】
演算量＝Ｉ×Ｏ＋Ｏ      ・・・（５）
【０１０２】
式（５）において、Ｉは、入力層のユニットの数であり、Ｏは、出力層のユニットの数である。
【０１０３】
具体的に、図１５で説明した入力サイズ情報１３４における「ｌａｙｅｒ」が「ｆｃ１」である情報（「Ｎｏ」が「６」である情報）には、「ｃｈａｎｎｅｌ」として「１００」が設定されている。また、図１５で説明した入力サイズ情報１３４における「ｌａｙｅｒ」が「ｐｏｏｌ２」である情報（「Ｎｏ」が「ｆｃ１」である情報の１つ前の情報）には、「ｃｈａｎｎｅｌ」として「５０」が設定され、「ｗｉｄｔｈ」として「４」が設定され、「ｈｅｉｇｈｔ」として「４」が設定されている。
【０１０４】
そのため、演算量算出部１１４は、Ｓ２３の処理において特定された層がｆｃ１であって、Ｓ３１の処理において特定された演算の種類が加算である場合、式（５）におけるＩが８００であり、Ｏが５００であると特定する。したがって、演算量算出部１１４は、この場合、演算回数（演算量）として「４００，５００（回）」を算出する。
【０１０５】
さらに、図１４で説明したバッチサイズ情報１３３における「ｌａｙｅｒ」が「ｆｃ１」である情報（「Ｎｏ」が「６」である情報）には、「ｂａｔｃｈ」として「６４」が設定されている。そのため、演算量算出部１１４は、算出した「４００，５００（回）」と「６４」とを乗算して算出した値である「２５，６３２，０００（回）」を、Ｓ２３の処理において特定された層がｆｃ１であって、Ｓ３１の処理において特定された演算の種類が加算である場合の演算回数（演算量）として算出する。
【０１０６】
その後、演算量算出部１１４は、図１６に示すように、「ｌａｙｅｒ」が「ｆｃ１」である情報（「Ｎｏ」が「６」である情報）の「ａｄｄ」に、算出した「２５，６３２，０００（回）」を設定する。
【０１０７】
［Ｓ２３からＳ４１の処理の具体例（５）］
続いて、例えば、Ｓ２３の処理において特定された層がＦｕｌｌｙ−ｃｏｎｎｅｃｔ  ｌａｙｅｒであって、Ｓ３１の処理において特定された演算の種類が乗算である場合、演算量算出部１１４は、Ｓ３２の処理において、以下の式（６）を用いて演算量の算出を行う。
【０１０８】
演算量＝Ｉ×Ｏ      ・・・（６）
【０１０９】
具体的に、演算量算出部１１４は、Ｓ２３の処理において特定された層がｆｃ１であって、Ｓ３１の処理において特定された演算の種類が乗算である場合、上記の場合と同様に、式（６）におけるＩが８００であり、Ｏが５００であると特定する。そのため、演算量算出部１１４は、この場合、演算回数（演算量）として「４００，０００（回）」を算出する。
【０１１０】
さらに、図１４で説明したバッチサイズ情報１３３における「ｌａｙｅｒ」が「ｆｃ２」である情報（「Ｎｏ」が「７」である情報）には、「ｂａｔｃｈ」として「６４」が設定されている。そのため、演算量算出部１１４は、算出した「４００，０００（回）」と「６４」とを乗算して算出した値である「２５，６００，０００（回）」を、Ｓ２３の処理において特定された層がｆｃ１であって、Ｓ３１の処理において特定された演算の種類が乗算である場合の演算回数（演算量）として算出する。
【０１１１】
その後、演算量算出部１１４は、図１６に示すように、「ｌａｙｅｒ」が「ｆｃ１」である情報（「Ｎｏ」が「６」である情報）の「ｍｕｌ」に、算出した「２５，６００，０００（回）」を設定する。
【０１１２】
図１０に戻り、演算時間算出部１１５は、情報格納領域１３０に記憶された処理性能情報１３５と、実行効率情報１３６とを取得する（Ｓ４２）。
【０１１３】
そして、演算時間算出部１１５は、例えば、情報格納領域に記憶された演算量累積情報１３８が示す値を、Ｓ４２の処理で取得した処理性能情報１３５で除算する（Ｓ４３）。
【０１１４】
具体的に、図１６で説明した演算量情報１３７における「ａｄｄ」、「ｍｕｌ」及び「ｃｍｐ」に設定された情報の合計は、約２，８９５，０００，０００（回）である。そのため、演算時間算出部１１５は、Ｓ３４の処理において、例えば、「２，８９５，０００，０００（回）」を演算量累積情報１３８として情報格納領域１３０に記憶する。
【０１１５】
したがって、例えば、１秒間に１００，０００（回）の演算を行うことが可能なコンピュータの情報が処理性能情報１３５に含まれている場合、演算時間算出部１１５は、Ｓ４２の処理において、例えば、２，８９５，０００，０００（回）を１００，０００（回）で除算することにより、２，８９５（秒）を算出する。
【０１１６】
その後、演算時間算出部１１５は、Ｓ４３の処理で算出した値を、Ｓ４２の処理で取得した実行効率情報１３６が示す値で除算する（Ｓ４４）。
【０１１７】
具体的に、例えば、実行効率情報１３６が８０（％）を示している場合、演算時間算出部１１５は、Ｓ４３の処理で算出した２，８９５（秒）を０．８で除算することにより、３，６１９（秒）を算出する。
【０１１８】
すなわち、演算時間算出部１１５は、情報格納領域１３０に記憶された演算量累積情報１３８が示す演算量及び処理性能情報１３５が示す処理能力だけでなく、ニューラルネットワークに対する入力データの認識または学習において用いられるライブラリに関する情報を反映される形で演算時間の算出を行う。
【０１１９】
これにより、情報処理装置１は、ニューラルネットワークに対する入力データの認識または演算の所要時間をより正確に算出することが可能になる。
【０１２０】
なお、演算時間算出部１１５は、Ｓ４３の処理において、演算量情報１３７に含まれる演算量のそれぞれを、処理性能情報１３５が示す値で除算するものであってもよい。そして、演算時間算出部１１５は、Ｓ４４の処理において、算出された値のそれぞれを、実行効率情報１３６が示す値で除算するものであってよい。また、演算時間算出部１１５は、この場合、算出された値のそれぞれを、実行効率情報１３６が示す値のうちの各演算の種類に対応する値（演算の種類ごとに異なる値）で除算するものであってもよい。
【０１２１】
そして、情報処理装置１の情報送信部１１６は、例えば、Ｓ４４の処理で算出した値を操作端末３に送信する（Ｓ４５）。
【０１２２】
このように、情報処理装置１は、ニューラルネットワークを構成する１以上の層の配置を示すネットワーク情報１３１と、各層において用いられるパラメータ情報１３２と、入力データのサイズを含む入力サイズ情報１３４と、所定のコンピュータの処理性能を示す処理性能情報１３５とを取得する。
【０１２３】
そして、情報処理装置１は、取得したネットワーク情報１３１と、パラメータ情報１３２と、入力サイズ情報１３４とに基づいて、入力データの入力に応じてニューラルネットワークにおいて行われる演算の演算量を算出する。その後、情報処理装置１は、算出した演算量と、取得した処理性能情報１３５とに基づいて、所定のコンピュータにおいて入力データの学習が行われる場合の演算時間を算出する。
【０１２４】
すなわち、ニューラルネットワークにおいて認識または学習が行われる場合の演算量は、入力データのサイズやニューラルネットワークの構造（ニューラルネットワークを構成する層の配置やパラメータ値）に基づいて決定される。そのため、情報処理装置１は、これらの情報から、ニューラルネットワークにおいて認識または学習が行われる際の演算量を算出する。そして、情報処理装置１は、算出した演算量を用いて、学習または演算が行われる際の演算時間を算出する。
【０１２５】
これにより、情報処理装置１は、ニューラルネットワークにおいて入力データの認識または学習を実際に行うことなく、入力データの認識または学習に要する時間（見積り時間）を容易に取得することが可能になる。
【０１２６】
なお、図１１に示す例において、ニューラルネットワークが、Ｃｏｎｖｏｌｕｔｉｏｎ  ｌａｙｅｒと、Ｐｏｏｌｉｎｇ  ｌａｙｅｒと、Ｆｕｌｌｙ−ｃｏｎｎｅｃｔ  ｌａｙｅｒとを有する場合について説明を行ったが、本実施の形態における演算時間算出処理は、他の層を含むニューラルネットワークに対しても適用可能である。
【０１２７】
具体的に、情報処理装置１は、例えば、ＲｅＬＵ、ＳｏｆｔＭａｘ、Ｄｒｏｐｏｕｔ、正規化層及びＥｌｅｍｅｎｔ−ｗｉｓｅのうちの少なくとも１つを有するニューラルネットワークに対して、本実施の形態における演算時間算出処理を実行するものであってもよい。
【０１２８】
以上の実施の形態をまとめると、以下の付記の通りである。
【０１２９】
（付記１）
ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得し、
取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出し、
算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する、
ことを特徴とする演算時間算出方法。
【０１３０】
（付記２）
付記１において、
前記取得する工程では、前記１以上の層ごとに、各層において行われる演算量の算出に用いられる式を取得し、
前記演算量を算出する工程では、
前記配置を示す情報を参照し、前記１以上の層ごとに、各層の直前に演算が行われる特定の層を特定し、
前記１以上の層ごとに、前記入力データのサイズまたは前記特定の層によって演算が行われた後の前記入力データのサイズと、各層に対応する前記パラメータとを、取得した前記式に代入することにより、前記１以上の層ごとの前記演算量を算出する、
ことを特徴とする演算時間算出方法。
【０１３１】
（付記３）
付記２において、
前記１以上の層ごとの演算量を算出する工程では、前記１以上の層ごとであって演算の種類ごとに、前記演算量を算出する、
ことを特徴とする演算時間算出方法。
【０１３２】
（付記４）
付記１において、
前記演算時間を算出する工程では、算出した前記演算量を前記処理性能で除算することにより、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間の算出を行う、
ことを特徴とする演算時間算出方法。
【０１３３】
（付記５）
付記１において、
前記取得する工程では、前記演算を行う際に所定のライブラリを用いた場合における前記演算の実行効率を取得し、
前記演算時間を算出する工程では、前記演算量を前記処理性能で除算することにより算出した値を、取得した前記実行効率で除算することにより、前記演算時間の算出を行う、
ことを特徴とする演算時間算出方法。
【０１３４】
（付記６）
付記１において、
前記入力データは、画像データである、
ことを特徴とする演算時間算出方法。
【０１３５】
（付記７）
付記１において、
前記演算量を算出する工程では、前記ニューラルネットワークにおいて前記入力データの認識が行われる際の演算量の算出を行う、
ことを特徴とする演算時間算出方法。
【０１３６】
（付記８）
付記１において、
前記演算量を算出する工程では、前記ニューラルネットワークに対する前記入力データの学習が行われる際の演算量の算出を行う、
ことを特徴とする演算時間算出方法。
【０１３７】
（付記９）
ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得する情報取得部と、
取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出する演算量算出部と、
算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する演算時間算出部と、を有する、
ことを特徴とする演算時間算出装置。
【０１３８】
（付記１０）
付記９において、
前記情報取得部は、前記１以上の層ごとに、各層において行われる演算量の算出に用いられる式を取得し、
前記演算量算出部は、
前記配置を示す情報を参照し、前記１以上の層ごとに、各層の直前に演算が行われる特定の層を特定し、
前記１以上の層ごとに、前記入力データのサイズまたは前記特定の層によって演算が行われた後の前記入力データのサイズと、各層に対応する前記パラメータとを、取得した前記式に代入することにより、前記１以上の層ごとの前記演算量を算出する、
ことを特徴とする演算時間算出装置。
【０１３９】
（付記１１）
付記１０において、
前記演算量算出部は、前記１以上の層ごとであって演算の種類ごとに、前記演算量を算出する、
ことを特徴とする演算時間算出装置。
【０１４０】
（付記１２）
ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得し、
取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出し、
算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する、
処理をコンピュータに実行させることを特徴とする演算時間算出プログラム。
【０１４１】
（付記１３）
付記１２において、
前記取得する処理では、前記１以上の層ごとに、各層において行われる演算量の算出に用いられる式を取得し、
前記演算量を算出する処理では、
前記配置を示す情報を参照し、前記１以上の層ごとに、各層の直前に演算が行われる特定の層を特定し、
前記１以上の層ごとに、前記入力データのサイズまたは前記特定の層によって演算が行われた後の前記入力データのサイズと、各層に対応する前記パラメータとを、取得した前記式に代入することにより、前記１以上の層ごとの前記演算量を算出する、
ことを特徴とする演算時間算出プログラム。
【０１４２】
（付記１４）
付記１２において、
前記１以上の層ごとの前記演算量を算出する処理では、前記１以上の層ごとであって演算の種類ごとに、前記演算量を算出する、
ことを特徴とする演算時間算出プログラム。
【０１４３】
（付記１５）
ニューラルネットワークを学習する複数の物理マシンを有し、
前記複数の物理マシンのうちの少なくとも１つは、
前記ニューラルネットワークを構成する１以上の層の配置を示す情報と、前記１以上の層のそれぞれにおいて用いられるパラメータ値と、前記ニューラルネットワークに対する入力データのサイズと、所定のコンピュータの処理性能とを取得する情報取得部と、
取得した前記配置を示す情報と、前記パラメータ値と、前記入力データのサイズとに基づいて、前記入力データの入力に応じて前記ニューラルネットワークにおいて行われる演算の演算量を算出する演算量算出部と、
算出した前記演算量と、取得した前記処理性能とに基づいて、前記所定のコンピュータにおいて前記演算が行われる場合の演算時間を算出する演算時間算出部と、を有する、
ことを特徴とする演算時間算出システム。
【０１４４】
（付記１６）
付記１５において、
前記情報取得部は、前記１以上の層ごとに、各層において行われる演算量の算出に用いられる式を取得し、
前記演算量算出部は、
前記配置を示す情報を参照し、前記１以上の層ごとに、各層の直前に演算が行われる特定の層を特定し、
前記１以上の層ごとに、前記入力データのサイズまたは前記特定の層によって演算が行われた後の前記入力データのサイズと、各層に対応する前記パラメータとを、取得した前記式に代入することにより、前記１以上の層ごとの前記演算量を算出する、
ことを特徴とする演算時間算出システム。
【０１４５】
（付記１７）
付記１５において、
前記演算量算出部は、
前記１以上の層ごとであって演算の種類ごとに、前記演算量を算出する、
ことを特徴とする演算時間算出システム。
【符号の説明】
【０１４６】
１：情報処理装置          ２：記憶装置
３：操作端末              １０１：ＣＰＵ
１０２：メモリ            １０３：Ｉ／Ｏユニット
１０４：記憶媒体          １３０：情報格納領域
【図１】
2019032729.tif 000003
【図２】
2019032729.tif 000004
【図３】
2019032729.tif 000005
【図４】
2019032729.tif 000006
【図５】
2019032729.tif 000007
【図６】
2019032729.tif 000008
【図７】
2019032729.tif 000009
【図８】
2019032729.tif 000010
【図９】
2019032729.tif 000011
【図１０】
2019032729.tif 000012
【図１１】
2019032729.tif 000013
【図１２】
2019032729.tif 000014
【図１３】
2019032729.tif 000015
【図１４】
2019032729.tif 000016
【図１５】
2019032729.tif 000017
【図１６】
2019032729.tif 000018