(57)【特許請求の範囲】
【請求項１】
対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得する取得部を有し、
前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、
前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、
前記対象行列データのスパース性を算出するスパース性算出部と、
前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択する選択部と、を有し、
前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、
前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力する出力部を有し、
前記選択部は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択し、
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる、
情報処理装置。
【請求項２】
前記第１スパース表現フォーマットが要素単位フラグスパース表現フォーマットであり、かつ、前記第２スパース表現フォーマットが compressed sparse row である場合、前記高スパース性閾値は数１で定められ、
前記対象行列データのスパース性ＳはＳ＝ｎｚｅｒｏ／ｎｔｏｔａｌで定められ、
Th1 は前記高スパース性閾値を表し、R は前記対象行列データの行数を表し、C は前記対象行列データの列数を表し、ｎｚｅｒｏは前記対象行列データにおけるゼロ値データ要素の数を表し、ｎｔｏｔａｌは前記対象行列データに含まれるデータ要素の総数を表す、請求項１に記載の情報処理装置。
【数１】
0006911949.tif 000014
【請求項３】
前記第１スパース表現フォーマットが要素単位フラグスパース表現フォーマットである場合、前記低スパース性閾値は数２で定められ、
前記対象行列データのスパース性ＳはＳ＝ｎｚｅｒｏ／ｎｔｏｔａｌで定められ、
Th2 は前記低スパース性閾値を表し、B は前記対象行列データの各データ要素を表すために利用されるビット数であり、ｎｚｅｒｏは前記対象行列データにおけるゼロ値データ要素の数を表し、ｎｔｏｔａｌは前記対象行列データに含まれるデータ要素の総数を表す、請求項１又は２に記載の情報処理装置。
【数２】
0006911949.tif 000015
【請求項４】
１次元の配列データを取得し、前記１次元の配列データを複数の行又は列に分割し、前記複数の行又は列を含む前記入力行列データ情報を生成する変換部を有し、
前記取得部は、前記変換部によって生成された前記入力行列データ情報を取得する、請求項１から３いずれか一項に記載の情報処理装置。
【請求項５】
３次元以上の配列データを取得し、前記３次元以上の配列データから複数の行列データを抽出し、それぞれが前記抽出した行列データのうちの１つを含む複数の前記入力行列データ情報を生成する変換部を有し、
前記取得部は、前記変換部によって生成された複数の前記入力行列データ情報を取得する、請求項１から４いずれか一項に記載の情報処理装置。
【請求項６】
コンピュータによって実行される制御方法であって、
対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得し、
前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、
前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、
前記対象行列データのスパース性を算出し、
前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択し、
前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、
前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力し、
前記表現フォーマットの選択は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択する、ことを含み、
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる、
制御方法。
【請求項７】
コンピュータに、
対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得させ、
前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、
前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、
前記対象行列データのスパース性を算出させ、
前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択させ、
前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、
前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力させ、
前記表現フォーマットの選択は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択する、ことを含み、
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体として、データ表現に関する。
【背景技術】
【０００２】
様々な種類の情報を表すために配列データが利用されている。例えば、ディープニューラルネットワーク（Deep Neural Networks（DNN））の出力データを配列データで表すことができる。
【０００３】
行列データは配列データの一種であり、行と列で構成される。行列データは種々のフォーマットで表現されうる。行列データを表すために利用されるデータフォーマットは、主に密表現フォーマットとスパース表現フォーマットという２つに分類される。密表現フォーマットは、行列データを全てのデータ要素で表す。一方、スパース表現フォーマットは、行列データを、非ゼロ値データ要素（値がゼロでないデータ要素）とそれらの行列内における位置で表す。非特許文献１は、CSR（compressed sparse row）、CSC（compressed sparse column）、COO（Coordinate list）、BSR（block sparse row）、LOL（list of list）などといった様々な種類のスパース表現フォーマットを開示している。
【０００４】
全ての行列データに共通する最適な表現フォーマットというものはなく、どの表現フォーマットが適しているかは、表現したい行列データに依存する。特許文献１は行列データを表現するために用いる表現フォーマットを選択する方法を開示している。この文献では、密又はスパースのデータ表現を選択するために、行列データのスパース性が閾値と比較されている。行列データのスパース性は、行列がどの程度スパースなのかを表す値である。例えば、行列データのスパース性は、データ要素の総数に対する、値がゼロのデータ要素の数の割合で定義される。行列データのスパース性に基づきスパース表現を利用すると判定された場合、行列データの行と列の数に基づいて、CSC と CSR のどちらかがさらに選択される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１６／０３６４３２７号明細書
【非特許文献】
【０００６】
【非特許文献１】Reginald P. Tewarson、「Sparse Matrices」、ACADEMIC PRESS INC、１９７３年５月１日
【非特許文献２】Alex Krizhevsky ら、「ImageNet Classification with Deep Convolutional Neural Networks」、THE NEURAL INFORMATION PROCESSING SYSTEMS CONFERENCE、pp. 1097-1105、２０１２年１２月
【非特許文献３】Geoffrey Hinton ら、「Deep Neural Networks for Acoustic Modeling in Speech Recognition」、IEEE SIGNAL PROCESSING MAGAZINE、VOL 29、ISSUE 6、pp. 82-97、２０１２年１０月１８日
【非特許文献４】Alex Graves ら、「Speech Recognition with Deep Recurrent Neural Networks」、IEEE International Conference on Acoustics, Speech and Signal Processing 2013、pp. 26-31、２０１３年５月２６日から３１日
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示されている技術は、行列データのスパース性を利用して、単にスパース性が高い行列データとスパース性が低い行列データを区別し、密表現フォーマットとスパース表現フォーマットのどちらを利用するのかを決めている。そのため、この技術は、中程度のスパース性を有する行列データには有効でない。本発明の目的の１つは、中程度のスパース性を有する行列データに適した表現フォーマットについても効率的に決定できる技術を提供することである。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得する取得部を有し、前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、前記対象行列データのスパース性を算出するスパース性算出部と、前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択する選択部と、を有し、前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力する出力部を有し、
前記選択部は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択し、
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる。
【０００９】
本発明の制御方法は、コンピュータによって実行される。当該制御方法は、対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得し、前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、前記対象行列データのスパース性を算出し、前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択し、前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力し、
前記表現フォーマットの選択は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択する、ことを含み、
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる。
【００１０】
本発明のプログラムは、コンピュータに、対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得させ、前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、前記対象行列データのスパース性を算出させ、前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択させ、前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力させ、
前記表現フォーマットの選択は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択する、ことを含み、
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる。
【発明の効果】
【００１１】
本発明によれば、中程度のスパース性を有する行列データに適した表現フォーマットについても効率的に決定できる技術が提供される。
【図面の簡単な説明】
【００１２】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
【００１３】
【図１】実施形態１の情報処理装置を例示する図である。
【図２】対象行列を密表現フォーマットで表す行列データ情報の例を示す図である。
【図３】対象行列を CSR スパース表現フォーマットで表す行列データ情報の例を示す図である。
【図４】対象行列を CSC スパース表現フォーマットで表す行列データ情報の例を示す図である。
【図５】対象行列を行中心の COO スパース表現フォーマットで表す行列データ情報の例を示す図である。
【図６】ハードウエア要素とソフトウエア要素の組み合わせで情報処理装置が実現される場合について、情報処理装置のハードウエア構成を例示するブロック図である。
【図７】実施形態１の情報処理装置によって実行される処理の流れを表すフローチャートを例示する図である。
【図８】行列データの３つの例を示す図である。
【図９】表現フォーマットを選択する流れを例示する図である。
【図１０】行優先順序要素単位フラグスパース表現フォーマットで対象行列データを表す行列データ情報の例を示す図である。
【図１１】列優先順序要素単位フラグスパース表現フォーマットで対象行列データを表す行列データ情報の例を示す図である。
【図１２】スパース性表現フォーマットとして３つの選択肢がある場合について、出力行列データ情報の表現フォーマットを選択するフローの例を示す図である。
【図１３】出力部２０８０がスパース性算出部２０４０及び選択部２０６０と並行で動作する場合におけるフローチャートを例示する図である。
【図１４】実施形態２の情報処理装置を例示する図である。
【図１５】１次元の配列データが入力される場合において変換部２１００がどのように動作するのかを例示する図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１５】
＜実施形態１＞
図１は、実施形態１の情報処理装置２０００を例示する図である。情報処理装置２０００は、複数の表現フォーマットのうちの１つで行列データを表現する行列データ情報を扱う。以下では、行列データ情報によって表される行列データを、「対象行列データ」と呼ぶ。
【００１６】
複数の表現フォーマットは、密表現フォーマット（dense representation format）と、少なくとも２つのスパース表現フォーマット（sparse representation format）を含む。対象行列データを密表現フォーマットで表す場合、行列データ情報は、行優先順序と列優先順序のいずれかで、対象行列データの全てのデータ要素を含みうる。図２は、密表現フォーマットで対象行列データを表す行列データ情報の例を示す図である。図２において、行列データ情報１０−１は、行優先順序で全てのデータ要素を示すデータ列１２−１と、行列データ情報で利用されている表現フォーマットを示すフォーマットフラグ１４−１とを含む。フォーマットフラグ１４−１は、行優先順序の密表現フォーマットが利用されていることを示している。一方、行列データ情報１０−２は、列優先順序で全てのデータ要素を示すデータ列１２−２を含む。フォーマットフラグ１４−２は、列優先順序の密表現フォーマットが利用されていることを示している。
【００１７】
スパース表現フォーマットで行列データを表す場合、行列データ情報は、全てのデータ要素のうち、少なくとも１つを含まない。例えば、スパース表現フォーマットの行列データ情報は、非ゼロ値データ要素（non-zero data element）とその位置情報を含む。位置情報は、各非ゼロ値データ要素の位置を定めるために利用できる情報である。例えば位置情報は、各非ゼロ値データ要素又は各ゼロ値データ要素（zero-valued data element）のインデックスを含む。
【００１８】
CSR、CSC、及び COO は、スパース表現フォーマットの例である。図３は、CSR スパース表現フォーマットで対象行列データを表す行列データ情報を例示する図である。行列データ情報１０−３は、データ列１２−３、フォーマットフラグ１４−３、及び位置情報１６−３を含む。図３では、x5 と x6 はゼロであると仮定されている。データ列１２−３は、行優先順序（row-major）で非ゼロ値データ要素のみを示し、x5 と x6 は含まない。フォーマットフラグ１４−３は、CSR スパース表現フォーマットが利用されていることを示している。位置情報１６−３は、非ゼロ値データ要素の列インデックス、及び行ポインタを示している。
【００１９】
図４は、CSC スパース表現フォーマットで対象行列データを表す行列データ情報を例示する図である。行列データ情報１０−４は、データ列１２−４、フォーマットフラグ１４−４、及び位置情報１６−４を含む。図４でも、x5 と x6 はゼロであると仮定されている。データ列１２−４は、列優先順序（column-major）で非ゼロ値データ要素のみを示し、x5 と x6 は含まない。フォーマットフラグ１４−４は、CSC スパース表現フォーマットが利用されていることを示している。位置情報１６−４は、非ゼロ値データ要素の行インデックス、及び列ポインタを示している。
【００２０】
図５は、行優先順序の COO スパース表現フォーマットで対象行列データを表す行列データ情報を例示する図である。行列データ情報１０−５は、データ列１２−５、フォーマットフラグ１４−５、及び位置情報１６−５を含む。図５でも、x5 と x6 はゼロであると仮定されている。データ列１２−５は、行優先順序で非ゼロ値データ要素のみを示し、x5 と x6 は含まない。フォーマットフラグ１４−５は、COO スパース表現フォーマットが利用されていることを示している。位置情報１６−５は、非ゼロ値データ要素の行インデックス及び列インデックスを含む。なお、列優先順序の COO も利用できる。
【００２１】
情報処理装置２０００は、密表現フォーマット又はスパース表現フォーマットで対象行列データが表された入力行列データ情報を取得し、対象行列データのスパース性を算出し、出力行列データ情報で利用すべき表現フォーマットを選択し、選択された表現フォーマットで対象行列データが表現された出力行列データ情報を出力する。出力行列データ情報で利用すべき表現フォーマットは、前述した複数の表現フォーマット（密表現フォーマット、及び少なくとも２つのスパース表現フォーマット）の中から、対象行列データのスパースお性に基づいて選択される。
【００２２】
上述した動作を実現するため、情報処理装置２０００は、取得部２０２０、スパース性算出部２０４０、選択部２０６０、及び出力部２０８０を有する。取得部２０２０は、入力行列データ情報を取得する。スパース性算出部２０４０は、入力行列データ情報によって表されている対象行列データのスパース性を算出する。選択部２０６０は、スパース性算出部２０４０によって算出されたスパース性に基づいて、出力行列データ情報に適用する表現フォーマットを、前述した複数の表現フォーマットから選択する。出力部２０８０は、選択部２０６０によって選択された表現フォーマットで対象行列を表している出力行列データ情報を出力する。
【００２３】
＜作用効果＞
本実施形態の情報処理装置２０００によれば、対象行列データの表現フォーマットが、行列データのスパース性に基づいて、密表現フォーマット及び少なくとも２つのスパース表現フォーマットの中から決定される。そのため、行列データのスパース性が、密表現フォーマットとスパース表現フォーマットのいずれを使うかの判定だけでなく、対象行列を表すための表現フォーマットとして複数のスパース表現フォーマットのうちのどれを使うべきかを判定するためにも利用される。よって、密表現フォーマットとスパース表現フォーマットのどちらを利用するかの判定だけに行列データのスパース性が利用される特許文献１の技術と異なり、情報処理装置２０００は、中程度のスパース性を持つ行列データについても、効率的に適切な表現フォーマットを決定することができる。
【００２４】
行列データの使用例は、DNN における記述である。画像認識のための一般的な DNN 構造は、非特許文献２に開示されている深層畳み込みネットワーク（Deep Convolutional Neural Network（DCNN)）であり、音声認識のための一般的な DNN 構造は、非特許文献３と４に開示されている深層フィードフォワードニューラルネットワーク（Deep Feed Forward Neural Network（DFF)）又は深層リカレントニューラルネットワーク（Deep Recurrent Neural Network（DRNN)）である。一般的に、DNN からの出力データは、特徴データやアクティベーションデータと呼ばれており、１次元ベクトル、行列、又はＮ次元配列である。アクティベーションデータが DCNN から出力される場合、特徴マップと呼ばれることが通常であり、行列又は多次元配列である。一方、アクティベーションデータが DFF や DRNN から出力される場合、特徴と呼ばれるベクトルである。
【００２５】
DCNN は、カーネルを入力特徴マップに畳み込んで特徴を抽出する畳み込み層、入力される特徴を非線形関数で変換するアクティベーション層、入力される特徴をダウンサンプルするプーリング層、及び入力をクラスに分類するために行列の乗算を行う全結合層の積み重ねで構成される。DFF は全結合層とアクティベーション層の積み重ねで構成される。DRNN は過去と現在のコンテキストで行列を乗算するレカレント層とアクティベーション層との積み重ねで構成される。アクティベーション層は、入力に対して非線形関数を適用することで、非統一的なスパース行列データを生成する。非線形関数は、例えば sigmoid や ReLU（Rectified Linear Unit）関数である。
【００２６】
DNN では大量の行列データが入力及び出力されるため、ストレージ容量やネットワーク帯域などの観点から、行列データの効率的な表現がとても重要である。そのため、情報処理装置による行列データの表現フォーマットの適切な選択は DNN において有用である。
【００２７】
なお、DNN は、情報処理装置２０００の適用例の一つにすぎず、情報処理装置２０００は、行列データが利用される多くの領域に適用可能である。
【００２８】
以下、本実施形態の情報処理装置２０００についてより詳細に説明する。
【００２９】
＜ハードウエア構成の例＞
情報処理装置２０００の各機能構成部は、図１に示されている各機能構成部を実現するハードウエア要素のみ（例えば、ハードワイヤードされた電子回路）で実現されてもよいし、ハードウエア要素とソフトウエア要素の組み合わせ（例えば、電子回路とその電子回路を制御するプログラム）で実現されてもよい。
【００３０】
図６は、ハードウエア要素とソフトウエア要素の組み合わせで実現される情報処理装置２０００について、情報処理装置２０００のハードウエア構成を例示するブロック図である。情報処理装置２０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。
【００３１】
プロセッサ１０４０は、コンピュータプログラムを実行する電子回路であり、例えば CPU（central processing unit）や GPU（graphics processing unit）である。その他にも例えば、プロセッサ１０４０は、ASIC（Application-Specific Integrated Circuit）やASIP（Application-Specific Instruction set Processor）などの特別な回路や、FPGA（Field Programmable Gate Array）の様な再構成可能なデバイスであってもよい。メモリ１０６０は、RAM（random access memory）や ROM（read only memory）などの主記憶装置である。ストレージ１０８０は、ハードディスク、SSD（solid state drive）、又はメモリカードなどの補助記憶装置である。入出力インタフェース１１００は、それを介してキーボードやディスプレイなどが情報処理装置２０００と接続されるインタフェースである。ネットワークインタフェース１１２０は、それを介して情報処理装置が LAN や WAN などのネットワークネットワークと接続されるインタフェースである。
【００３２】
ストレージデバイス１０８０は、前述した情報処理装置２０００の各機能構成部を実現するためのプログラムモジュールを記憶している。プロセッサ１０４０は、それらのプログラムをメモリ１０６０に読み出し、読み出したプログラムモジュールを実行する。
【００３３】
＜処理の流れ＞
図７は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。取得部２０２０は、行列データを密表現フォーマット又はスパース表現フォーマットで表す入力行列データ情報を取得する（Ｓ１０２）。スパース性算出部２０４０は、対象行列データのスパース性を算出する（Ｓ１０４）。選択部２０６０は、算出したスパース性に基づいて、複数の表現フォーマットのうちの一つを選択する（Ｓ１０６）。出力部２０８０は、選択された表現フォーマットで対象行列データを表す出力行列データ情報を出力する（Ｓ１０８）。
【００３４】
＜行列データ情報の取得：Ｓ１０２＞
取得部２０２０は、入力行列データ情報を取得する（Ｓ１０２）。入力行列データ情報は様々な方法で取得することができる。例えば、入力行列データ情報はストレージデバイス１０８０に予め格納されうる。この場合、取得部２０２０は、入力行列データ情報ストレージデバイス１０８０から取得する。その他にも例えば、入力行列データ情報は、キーボードやタッチパネルなどの入力デバイスを用いて情報処理装置２０００のユーザによって入力されてもよい。その他にも例えば、入力行列データ情報が格納されているサーバマシンや NAS（network attached storage）などの外部デバイスにアクセスし、これらの外部デバイスから入力行列データ情報を取得してもよい。その他にも例えば、取得部２０２０は、外部デバイスから送信される入力行列データ情報を受信してもよい。
【００３５】
＜行列データのスパース性の算出：Ｓ１０４＞
スパース性算出部２０４０は、対象行列データのスパース性を算出する（Ｓ１０４）。行列データのスパース性は、以下の式で定義されうる。
【数１】
0006911949.tif 000002
S は行列データのスパース性表す。n_zero は、行列でーたにおけるゼロ値データ要素の数を表す。n_total は、行列データに含まれるデータ要素の総数を表す。この定義により、S の値が大きいほど、行列のスパース性が高くなる。
【００３６】
図８は、行列データＡ、Ｂ、及びＣという３つの行列データの例を示す。行列データＡについては、ゼロ値データ要素の数とデータ要素の総数がそれぞれ、２と２５である。そのため、行列データＡのスパース性は、0.08 (2/25) である。行列データＢについては、ゼロ値データ要素の数とデータ要素の総数がそれぞれ、６と２５である。そのため、行列データＢのスパース性は、0.24 (6/25) である。行列データＣについては、ゼロ値データ要素の数とデータ要素の総数がそれぞれ、４８と４９である。そのため、行列データＣのスパース性は、0.98 (48/49) である。
【００３７】
スパース性算出部２０４０は、取得部２０２０によって取得された入力行列データ情報を利用して、対象行列データのスパース性を算出する。例えば、スパース性算出部２０４０は、対象行列データについて、ゼロ値データ要素の数と非ゼロ値データ要素の数をそれぞれカウントする。次に、スパース性算出部２０４０は、対象行列データにおけるゼロ値データ要素の数と非ゼロ値データ要素の数を足すことで、行列データのデータ要素の総数を算出する。さらに、スパース性算出部２０４０は、セロ値データ要素の数と対象行列のデータ要素の総数を式１に適用することで、対象行列データのスパース性 S を算出する。なお、非ゼロ値データ要素の数と行列データのデータ要素の総数を把握する方法は、上述の例示した方法に限定されず、様々な既存の方法を適用できる。
【００３８】
入力行列データ情報が対象行列データをスパース表現フォーマットで表す場合、入力行列データ情報によって表されるデータ列１２は、ゼロ値データ要素を含まない。そのため、スパース性算出部２０４０は、データ列１２のみでは、ゼロ値データ要素をカウントできない。この場合、例えばスパース性算出部２０４０は、入力行列データ情報によって示されるデータ列１２と位置情報１６を利用して、密表現フォーマットで表される対象行列データのデータ列１２を生成する。そして、スパース性算出部２０４０は、生成されたデータ列を利用して、対象行列データのゼロ値データ要素の数をカウントする。
【００３９】
その他にも例えば、入力行列データ情報は、対象行列データの非ゼロ値データ要素の数や、対象行列データのデータ要素の総数を示してもよい。この構成では、スパース性算出部２０４０は、対象行列データのゼロ値データ要素をカウントすることなく、対象行列データのスパース性を算出できる。
【００４０】
＜表現フォーマットの選択：Ｓ１０６＞
選択部２０６０は算出したスパース性に基づいて、複数の表現フォーマットのうちの１つを選択する（Ｓ１０６）。具体的には、選択部２０６０は、算出された対象行列データのスパース性と所定の閾値を比較し、その比較結果に基づいて表現フォーマットを選択する。
【００４１】
図９は、表現フォーマットを選択する処理の流れの例を示す図である。この例では、高スパース性閾値と低スパース性閾値という２つの所定の閾値が存在する。高スパース性閾値は、低スパース性閾値よりも大きい。
【００４２】
Ｓ２０２において、選択部２０６０は、算出された対象行列データのスパース性を低スパース性閾値と比較し、算出された対象行列データのスパース性が低スパース性閾値よりも小さいか否かを判定する。算出された対象行列データのスパース性が低スパース性閾値よりも小さいと判定された場合（Ｓ２０２：ＹＥＳ）、選択部２０６０は密表現フォーマットを選択する（Ｓ２０４）。
【００４３】
一方、算出された対象行列データのスパース性が低スパース性閾値よりも小さくないと判定された場合（Ｓ２０２：ＮＯ）、選択部２０６０は、算出された行列データのスパース性を高スパース性閾値と比較し、算出された対象行列データのスパース性が高スパース性閾値よりも小さいか否かを判定する（Ｓ２０６）。算出された対象行列データのスパース性が高スパース性閾値よりも小さいと判定された場合（Ｓ２０６：ＹＥＳ）、選択部２０６０は、第１スパース表現フォーマットを選択する（Ｓ２０８）。一方、算出された対象行列データのスパース性が高スパース性閾値よりも小さくないと判定された場合（Ｓ２０６：ＮＯ）、選択部２０６０は、第２スパース表現フォーマットを選択する（Ｓ２１０）。
【００４４】
第１と第２のスパース表現フォーマットは、第１スパース表現フォーマットが中程度のスパース性を持つ行列データに適している一方、第２スパース表現フォーマットがスパース性の高いものに適しているという点で、互いに異なる。そのため、選択部２０６０は、対象行列データのスパース性が高スパース性閾値よりも大きい場合に第２表現フォーマットを選択し、対象行列データのスパース性が高スパース性閾値以下である場合に第１表現フォーマットを選択する。
【００４５】
第１スパース表現フォーマットの例は、要素単位フラグ（element-wise flag）スパース表現フォーマットである。要素単位フラグスパース表現フォーマットは、行優先順序と列優先順序のどちらかで、行列データの非ゼロ値データ要素及び行列データの各要素についての非ゼロ値要素フラグにより行列データを表す。非ゼロ値要素フラグは、行列データの各要素について、データ要素の値がゼロであるか否かを示す。以下、行優先順序で非ゼロ値データ要素と非ゼロ値要素フラグが記述される要素単位フラグスパース表現フォーマットを、「行優先順序要素単位フラグスパース表現フォーマット」と呼び、列優先順序で非ゼロ値データ要素と非ゼロ値要素フラグが記述される要素単位フラグスパース表現フォーマットを、「列優先順序要素単位フラグスパース表現フォーマット」と呼ぶ。
【００４６】
図１０は、行優先順序要素単位フラグスパース表現フォーマットで対象行列データを表す行列データ情報の例を示す図である。行列データ情報１０−６は、行列データＡを行優先順序要素単位フラグスパース表現フォーマットで表している。この例において、x5 と x6 はゼロであると仮定されている。
【００４７】
行列データ情報１０−６は、データ列１２−６、フォーマットフラグ１４−６、及び位置情報１６−６を含む。x5 と x6 がゼロであるため、データ列１２−６は、x5と x6 を含まず、x0 から x4、x7 及び x8 を、行優先順序で含む。フォーマットフラグ１４−６は、行優先順序要素単位フラグスパース表現フォーマットが利用されていることを示す。位置情報１６−６は、非ゼロ値要素フラグを含む。x0 から x4、x7、及び x8 に対応する非ゼロ値要素フラグは１を示し、x5 と x6 に対応するものは０を示し、これらは行優先順序である。
【００４８】
図１１は、列優先順序要素単位フラグスパース表現フォーマットで行列データを表す行列データ情報の例を示す図である。行列データ情報１０−７は、行列データＡを列優先順序要素単位フラグスパース表現フォーマットで示す。この例でもまた、x5 と x6 はゼロであると仮定されている。
【００４９】
図１１に示されているように、データ列１２−７は、x5 と x6 を含まず、x0 から x4、x7、及び x8 を列優先順序で含む。非ゼロ値要素フラグ（位置情報１６−７）については、x0 から x4、x7、及び x8 に対応するものが１を示し、x5 と x6 に対応するものが０を示し、これらは列優先順序である。フォーマットフラグ１４−７は、列優先順序要素単位フラグスパース表現フォーマットが利用されていることを示す。
【００５０】
要素単位フラグスパース表現フォーマットで対象行列データを表す行列データ情報は、例えば、入力行列データ情報が対象行列データを密表現フォーマットで表す場合に、入力行列データ情報のデータ列の各データ要素を順にスキャンすることで、入力行列データ情報から生成することができる。スキャンされたデータ要素がゼロである場合、対応する非ゼロ値要素フラグはゼロに設定される。一方、スキャンされたデータ要素がゼロでない場合、対応する非ゼロ値要素フラグは１に設定され、要素単位フラグスパース表現フォーマットで対象行列データを表す行列データ情報のデータ列に対し、スキャンされたデータ要素が加えられる。なお、列優先順序要素単位フラグスパース表現フォーマットを利用する場合、入力行列データ情報のデータ列が列優先順序でスキャンされる一方、行優先順序要素単位フラグスパース表現フォーマットを利用する場合、入力行列データ情報のデータ列が行優先順序でスキャンされる。
【００５１】
なお、スパース性算出部２０４０は、対象行列データにおけるゼロ値データ要素の数と非ゼロ値データ要素の数をカウントする時に非ゼロ値要素フラグを生成するように構成されることが好ましい。なぜなら、スパース性算出部２０４０が必然的に対象行列データの各データ要素がゼロであるか否かを判定するためである。この構成によれば、出力部２０８０は、スパース性算出部２０４０によって生成される非ゼロ値要素フラグを利用することができ、要素単位フラグスパース表現を利用する時にこれらを生成する必要がない。
【００５２】
第２スパース表現フォーマットは、例えば、CSR、CSC、COO、BSR、又は LOL である。ただし、第１スパース表現フォーマットも、上述した４つのスパース表現フォーマットのうちの１つであってもよい。例えば、CSR と COO がそれぞれ、第１と第２のスパース表現フォーマットとして利用されうる。
【００５３】
高スパース性閾値の定義は、どの表現フォーマットが利用されるかに依存する。例えば、要素単位フラグスパース表現フォーマットが第１スパース表現フォーマットとして利用され、かつ、CSC が第２スパース表現フォーマットとして利用される場合、高スパース性閾値は、以下の式２で定義されうる。
【数２】
0006911949.tif 000003
Th1 は高スパース性閾値を表す。R は対象行列データの行数を表す。C は対象行列データの列数を表す。
【００５４】
概念的には、閾値は、対象行列データを表すために必要なデータ量について表現フォーマット間の比較をすることで定まる。上述した例の場合に関し、要素単位フラグスパース表現フォーマットと CSR で対象行列データを表す場合に使われるビットの数の比較は、以下の式３で表される。式２の Th1 は式３を S について解く（Th1 = S）ことで得られる。
【数３】
0006911949.tif 000004
B は、対象行列データの各データ要素を表すために利用されるビット数を表す。S は、対象行列データのスパース性を表す。
【００５５】
その他にも例えば、要素単位フラグスパース表現フォーマットが第１スパース表現フォーマットとして利用され、かつ、CSR が第２スパース表現フォーマットとして利用される場合、高スパース性閾値は以下の式４で定義されうる。
【数４】
0006911949.tif 000005
【００５６】
一方、要素単位フラグスパース表現フォーマットが第１スパース表現フォーマットとして利用される場合、低スパース性閾値は以下の式５で定義されうる。
【数５】
0006911949.tif 000006
Th2 は低スパース性閾値を表す。B は対象行列データの各データ要素を表すために利用されるビット数を表す。
【００５７】
情報処理装置２０００は、スパース性表現フォーマットの３つ以上の選択肢を持っていてもよい。図１２は、スパース性表現フォーマットに３つ以上の選択肢がある場合について、出力行列データ情報の表現フォーマットを選択する流れの例を示す図である。この例では、高スパース性閾値、中スパース性閾値、及び低スパース性閾値という３つの所定の閾値がある。中スパース性閾値は、高スパース性閾値よりも小さく、低スパース性閾値よりも大きい。
【００５８】
Ｓ３０２において、選択部２０６０は、算出された対象行列データのスパース性が低スパース性閾値よりも小さいか否かを判定する。算出された対象行列データのスパース性が低スパース性閾値よりも小さいと判定された場合（Ｓ３０２：ＹＥＳ）、選択部２０６０は密表現フォーマットを選択する（Ｓ３０４）。
【００５９】
一方、算出された対象行列データのスパース性が低スパース性閾値よりも小さくないと判定された場合（Ｓ３０２：ＮＯ）、選択部２０６０は、算出された対象行列データのスパース性を中スパース性閾値と比較し、算出された対象行列データのスパース性が中スパース性閾値よりも小さいか否かを判定する（Ｓ３０６）。算出された対象行列データのスパース性が中スパース性閾値よりも小さいと判定された場合（Ｓ３０６：ＹＥＳ）、選択部２０６０は第１スパース性表現フォーマットを選択する（Ｓ３０８）。算出された対象行列データのスパース性が中スパース性閾値よりも小さくないと判定された場合（Ｓ３０６：ＮＯ）、選択部２０６０は、算出された対象行列データのスパース性が高スパース性閾値よりも小さいか否かを判定する（Ｓ３１０）。算出された対象行列データのスパース性が高スパース性閾値よりも小さいと判定された場合（Ｓ３１０：ＹＥＳ）、選択部２０６０は第２スパース表現フォーマットを選択する（Ｓ３１２）。一方、算出された対象行列データのスパース性が高スパース性閾値よりも小さくないと判定された場合（Ｓ３１０：ＮＯ）、選択部２０６０は第３スパース性表現フォーマットを選択する（Ｓ３１４）。
【００６０】
第１、第２、及び第３のスパース性表現フォーマットはそれぞれ、例えば、要素単位フラグスパース表現フォーマット、CSR、及び COO である。この場合、中スパース性閾値と低スパース性閾値はそれぞれ、式４の Th1 と式５の Th2 で定義されうる。また、高スパース性閾値は以下の式で定義されうる。
【数６】
0006911949.tif 000007
C は対象行列データの列数を表す。
【００６１】
＜行列データ情報の出力：Ｓ１０８＞
出力部２０８０は、出力行列データ情報を出力する（Ｓ１０８）。出力行列データ情報は、出力部２０８０によって生成される。例えば、出力部２０８０は、選択部２０６０による選択の結果を取得し、その後、選択部２０６０によって選択された表現フォーマットで対象行列データを表す出力行列データ情報を生成する。
【００６２】
その他にも例えば、出力部２０８０は、選択部２０６０が出力行列データ情報の表現フォーマットを選択することと並行して、出力行列データ情報を用意してもよい。具体的には、出力部２０８０は、互いに異なる表現フォーマットで対象行列データを表す出力行列データ情報の全ての候補を用意してもよい。要素単位フラグスパース表現フォーマット、CSR、及び COO がスパース表現フォーマットの選択肢であるとする。この場合、出力部２０８０は、選択部２０６０が出力行列データ情報の表現フォーマットを選択することと並行して、対象行列データを要素単位フラグスパース表現フォーマット、CSR、及び COO のそれぞれで表す出力行列データ情報の３つの候補を生成することにより、出力行列データを用意する。
【００６３】
出力行列データ情報の候補を用意した後、出力部２０８０は、選択部２０６０から、選択された表現フォーマットが示されている情報を取得する。さらに、出力部２０８０は、候補の出力行列データ情報のうち、選択された表現フォーマットとマッチする表現フォーマットを持つものを、出力行列データ情報として出力する。ただし、選択部２０６０によって選択された表現フォーマットが入力行列データ情報で利用されているものと同じである場合、出力部２０８０は、入力行列データ情報を出力行列データ情報として出力してもよい。
【００６４】
その他にも例えば、出力行列データ情報の候補の用意は、対象行列データのスパース性の算出と並行して行われてもよい。
【００６５】
図１３は、出力部２０８０がスパース性算出部２０４０及び選択部２０６０と並行で動作する場合のフローチャートを例示する図である。なお、Ｓ１０２、Ｓ１０４、Ｓ１０６、及びＳ１０８は、図７におけるものと同じであり、これらはそれぞれ、取得部２０２０、スパース性算出部２０４０、選択部２０６０、及び出力部２０８０によって実行される。
【００６６】
入力行列データ情報は、出力行列データ情報を生成するために利用される。入力行列データ情報から出力行列データ情報を生成する方法は、入力行列データ情報の表現フォーマットに依存する。入力行列データ情報において対象行列データが密表現フォーマットで表されている場合、出力部２０８０は、対象行列データの全てのデータ要素を含むデータ列１２を利用して、出力行列データ情報を生成する。なお、対象行列データのフォーマットを密表現フォーマットからスパース表現フォーマットに変換する技術には、既存の技術を利用することができる。
【００６７】
一方、入力行列データ情報において対象行列データがスパース表現フォーマットで表されている場合、出力部２０８０は、非ゼロ値データ要素を示すデータ列１２及び位置情報１６を利用して、出力行列データ情報を生成する。例えば出力部２０８０は、非ゼロ値データ要素と位置情報を用いて対象行列データの全てのデータ要素を取り出し（入力行列データ情報を密表現フォーマットに変換し)、対象行列データ（取り出されたデータ要素）を、密表現フォーマットから、選択部２０６０によって選択された表現フォーマットに変換する。
【００６８】
その他にも例えば、出力部は、入力行列データ情報を、選択部２０６０によって選択された表現フォーマットに直接変換することで、出力行列データ情報を生成する。この場合、出力部２０８０は、入力フォーマットと出力フォーマットの各組み合わせについて、対象行列データを変換するためのアルゴリズムを含みうる。選択部２０６０によって選択されうる表現フォーマットに３つの選択肢があり、それぞれの名前が f1、f2、及び f3 であるとする。この場合、出力部２０８０は、対象行列データのフォーマットを、f1 から f2、f1 から f3、f2 から f1、f2 から f3、f3 から f1、及び f3 から f2 に変換するアルゴリズムを含みうる。
【００６９】
出力行列データ情報は、様々な方法により、情報処理装置２０００の内部と外部のどちらへ出力されてもよい。例えば出力部２０８０は、出力行列データ情報をメモリ１０６０やストレージデバイス１０８０に書き込む。その他にも例えば、出力部２０８０は、出力行列データ情報を、入出力インタフェース１１００を介して情報処理装置２０００に接続されているディスプレイに表示する。その他にも例えば、出力２０８０は、ネットワークインタフェース１１２０を介し、出力行列データ情報をサーバマシンや NAS に送信する。
＜実施形態２＞
【００７０】
図１４は、実施形態２の情報処理装置２０００を例示する図である。以下で記載される機能を除き、本実施形態の情報処理装置２０００は、実施形態１の情報処理装置２０００と同様の機能を有する。
【００７１】
本実施形態の情報処理装置２０００は、行列（２次元配列）として記述されている入力データではなく、１次元（1D）配列や３次元以上の配列として記述されているものを受け付ける。この入力データは、１つ以上の行列データとして扱われ、各行列データが実施形態１に記載されたように処理される。
【００７２】
そのようにするために、情報処理装置２０００は変換部２１００を有する。変換部２１００は、入力データを取得し、１つ以上の入力行列データ情報に変換する。
【００７３】
入力データが１次元配列として記述されている場合、変換部２１００は、入力データを複数の行と複数の列に均等に分割することで、入力行列データ情報を生成する。各行の長さと各列の長さは、予め定められうる。 
【００７４】
図１５は、１次元配列データが入力された場合に変換部２１００がどのように動作するかを例示する図である。図１５では、入力データが１次元配列で記述されていることが仮定されている。入力データは１５個のデータ要素（x0 から x14)を含む。各行の長さは５と定められている。この場合、変換部２１００は、入力データを均等に３分割する。具体的には、x0 から x4 のシーケンスが第１の行に変換され、x5 から x9 のシーケンスが第２の行に変換され、x10 から x14 のシーケンスが第３の行に変換される。
【００７５】
入力データが３以上の次元の配列データとして記述されている場合、変換部２１００は、入力データを、複数の行列データの集まりとして扱う。例えば、３次元配列データは、複数の行列データのシーケンスとして扱うことができる。そこで、変換部２１００は、３次元以上の配列データに含まれる各行列データを取り出し、各行列データを含む複数の入力行列データ情報を生成する。
【００７６】
生成された入力行列データのフォーマットフラグは、変換部２１００が取得した入力データの表現フォーマットを示す。例えば、入力データの表現フォーマットが密表現フォーマットである場合、変換部２１００は、それぞれが表現フラグに密表現フォーマットを示す１つ以上の入力行列データ情報を生成する。
【００７７】
＜作用効果＞
本実施形態の情報処理装置２０００によれば、行列データだけでなく、１次元や３次元以上の配列も、そのスパース性に基づいてより効率的な表現フォーマットに変換するために扱うことができる。
【００７８】
＜付記＞
以下、参考の構成の例を記載する。
（付記１）
対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得する取得部を有し、
前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、
前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、
前記対象行列データのスパース性を算出するスパース性算出部と、
前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択する選択部と、を有し、
前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、
前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力する出力部を有する、情報処理装置。
（付記２）
前記選択部は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択する、付記１に記載の情報処理装置。
（付記３）
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる、付記２に記載の情報処理装置。
（付記４）
前記第１スパース表現フォーマットが要素単位フラグスパース表現フォーマットであり、かつ、前記第２スパース表現フォーマットが compressed sparse row である場合、前記高スパース性閾値は数７で定められ、
Th1 は前記高スパース性閾値を表し、R は前記対象行列データの行数を表し、C は前記対象行列データの列数を表す、付記３に記載の情報処理装置。
【数７】
0006911949.tif 000008
（付記５）
前記第１スパース表現フォーマットが要素単位フラグスパース表現フォーマットである場合、前記低スパース性閾値は数８で定められ、
Th2 は前記低スパース性閾値を表し、B は前記対象行列データの各データ要素を表すために利用されるビット数である、付記３又は４に記載の情報処理装置。
【数８】
0006911949.tif 000009
（付記６）
１次元の配列データを取得し、前記１次元の配列データを複数の行又は列に分割し、前記複数の行又は列を含む前記入力行列データ情報を生成する変換部を有し、
前記取得部は、前記変換部によって生成された前記入力行列データを取得する、付記１から５いずれか一項に記載の情報処理装置。
（付記７）
３次元以上の配列データを取得し、前記３次元以上の配列データから複数の行列データを抽出し、それぞれが前記抽出した行列データのうちの１つを含む複数の前記入力行列データ情報を生成する変換部を有し、
前記取得部は、前記変換部によって生成された複数の前記入力行列データ情報を取得する、付記１から６いずれか一項に記載の情報処理装置。
（付記８）
コンピュータによって実行される制御方法であって、
対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得し、
前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、
前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、
前記対象行列データのスパース性を算出し、
前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択し、
前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、
前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力する、制御方法。
（付記９）
前記表現フォーマットの選択は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択する、ことを含む付記７に記載の制御方法。
（付記１０）
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる、付記９に記載の制御方法。
（付記１１）
前記第１スパース表現フォーマットが要素単位フラグスパース表現フォーマットであり、かつ、前記第２スパース表現フォーマットが compressed sparse row である場合、前記高スパース性閾値は数９で定められ、
Th1 は前記高スパース性閾値を表し、R は前記対象行列データの行数を表し、C は前記対象行列データの列数を表す、付記１０に記載の制御方法。
【数９】
0006911949.tif 000010
（付記１２）
前記第１スパース表現フォーマットが要素単位フラグスパース表現フォーマットである場合、前記低スパース性閾値は数１０で定められ、
Th2 は前記低スパース性閾値を表し、B は前記対象行列データの各データ要素を表すために利用されるビット数である、付記１０又は１１に記載の制御方法。
【数１０】
0006911949.tif 000011
（付記１３）
１次元の配列データを取得し、前記１次元の配列データを複数の行又は列に分割し、前記複数の行又は列を含む前記入力行列データ情報を生成することをさらに含み、
前記入力行列データ情報の取得において、前記１次元の配列データから生成された前記入力行列データを取得する、付記８から１２いずれか一項に記載の制御方法。
（付記１４）
３次元以上の配列データを取得し、前記３次元以上の配列データから複数の行列データを抽出し、それぞれが前記抽出した行列データのうちの１つを含む複数の前記入力行列データ情報を生成することをさらに含み、
前記入力行列データ情報の取得において、前記３次元以上の配列データから生成された複数の前記入力行列データ情報を取得する、付記８から１３いずれか一項に記載の制御方法。
（付記１５）
コンピュータに、
対象行列データを密表現フォーマット又はスパース表現フォーマットで表している入力行列データ情報を取得させ、
前記対象行列データが前記密表現フォーマットで表される場合、前記対象行列データは全てのデータ要素で表され、
前記対象行列データが前記スパース表現フォーマットで表される場合、前記対象行列データは、前記対象行列データの非ゼロ値データ要素で表され、
前記対象行列データのスパース性を算出させ、
前記算出されたスパース性に基づいて複数の表現フォーマットのうちの１つを選択し、
前記複数の表現フォーマットは、前記密表現フォーマットと、少なくとも２つの種類のスパース表現フォーマットを含み、
前記対象行列データを前記選択された表現フォーマットで表している出力行列データ情報を出力させる、プログラム。
（付記１６）
前記表現フォーマットの選択は、
前記算出されたスパース性が低スパース性閾値よりも大きいか否かを判定し、
前記算出されたスパース性が前記低スパース性閾値よりも小さいと判定された場合、前記密表現フォーマットを選択し、
前記算出されたスパース性が前記低スパース性閾値よりも小さくないと判定された場合、前記算出されたスパース性が高スパース性閾値よりも小さいか否かを判定し、前記高スパース性閾値は前記低スパース性閾値よりも大きく、
前記算出されたスパース性が前記高スパース性閾値よりも小さいと判定された場合、第１スパース表現フォーマットを選択し、
前記算出されたスパース性が前記高スパース性閾値よりも小さくないと判定された場合、第２スパース表現フォーマットを選択する、ことを含む付記１５に記載のプログラム。
（付記１７）
前記高スパース性閾値は、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第２スパース表現フォーマットで表すために利用されるビット数との比較によって定まり、
前記低スパース性閾値は、前記対象行列データを前記密表現フォーマットで表すために利用されるビット数と、前記対象行列データを前記第１スパース表現フォーマットで表すために利用されるビット数との比較によって定まる、付記１６に記載のプログラム。
（付記１８）
前記第１スパース表現フォーマットが要素単位フラグスパース表現フォーマットであり、かつ、前記第２スパース表現フォーマットが compressed sparse row である場合、前記高スパース性閾値は数１１で定められ、
Th1 は前記高スパース性閾値を表し、R は前記対象行列データの行数を表し、C は前記対象行列データの列数を表す、付記１７に記載のプログラム。
【数１１】
0006911949.tif 000012
（付記１９）
前記第１スパース表現フォーマットが要素単位フラグスパース表現フォーマットである場合、前記低スパース性閾値は数１２で定められ、
Th2 は前記低スパース性閾値を表し、B は前記対象行列データの各データ要素を表すために利用されるビット数である、付記１７又は１８に記載のプログラム。
【数１２】
0006911949.tif 000013
（付記２０）
１次元の配列データを取得し、前記１次元の配列データを複数の行又は列に分割し、前記複数の行又は列を含む前記入力行列データ情報を生成することをさらに含み、
前記入力行列データ情報の取得において、前記１次元の配列データから生成された前記入力行列データを取得する、付記１５から１９いずれか一項に記載のプログラム。
（付記２１）
３次元以上の配列データを取得し、前記３次元以上の配列データから複数の行列データを抽出し、それぞれが前記抽出した行列データのうちの１つを含む複数の前記入力行列データ情報を生成することをさらに含み、
前記入力行列データ情報の取得において、前記３次元以上の配列データから生成された複数の前記入力行列データ情報を取得する、付記１５から２０いずれか一項に記載のプログラム。
【図１】
0006911949.tif 000016
【図２】
0006911949.tif 000017
【図３】
0006911949.tif 000018
【図４】
0006911949.tif 000019
【図５】
0006911949.tif 000020
【図６】
0006911949.tif 000021
【図７】
0006911949.tif 000022
【図８】
0006911949.tif 000023
【図９】
0006911949.tif 000024
【図１０】
0006911949.tif 000025
【図１１】
0006911949.tif 000026
【図１２】
0006911949.tif 000027
【図１３】
0006911949.tif 000028
【図１４】
0006911949.tif 000029
【図１５】
0006911949.tif 000030