JP6794854B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP6794854B2
JP6794854B2 JP2017017668A JP2017017668A JP6794854B2 JP 6794854 B2 JP6794854 B2 JP 6794854B2 JP 2017017668 A JP2017017668 A JP 2017017668A JP 2017017668 A JP2017017668 A JP 2017017668A JP 6794854 B2 JP6794854 B2 JP 6794854B2
Authority
JP
Japan
Prior art keywords
data
processing unit
unit
arithmetic processing
element data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017017668A
Other languages
English (en)
Other versions
JP2018124867A (ja
Inventor
仁 ▲高▼橋
仁 ▲高▼橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017017668A priority Critical patent/JP6794854B2/ja
Priority to US15/877,444 priority patent/US20180217962A1/en
Publication of JP2018124867A publication Critical patent/JP2018124867A/ja
Application granted granted Critical
Publication of JP6794854B2 publication Critical patent/JP6794854B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
演算処理装置に用いられるGPU(Graphic Processing Unit)は、元々は画像処理用のプロセッサであるが、多数の和積演算器を備えることにより行列計算に最適化されているため、機械学習用の処理を行うプロセッサとしても用いられることが多い。そして、深層学習(ディープラーニング)を行う処理においても、GPUが用いられることが一般的である。
深層学習では、ニューラルネットワークを用いて処理が行われることが多い。例えば、画像認識の深層学習の場合、与えられた画像が何か判断するフォワード処理及び判断するためのニューラルネットワークのパラメータを更新するためのバックワード処理の2つの処理を有する。深層学習を行う演算処理装置は、フォワード処理での計算結果と期待値との差分を用いてバックワード処理を行い、ニューラルネットワークのパラメータを更新する。そして、演算処理装置は、更新したパラメータを用いてフォワード処理の精度を向上させる。
ニューラルネットワークは複数の層で構成される場合がある。フォワード処理が行われる順伝播では、入力データに対して各層で特徴量の抽出などの演算処理が行われ出力結果となる。そして、バックワード処理が行われる逆伝播では、それぞれの層において、順伝播の結果と期待値との差分を用いて各パラメータを更新する学習が順伝播と逆方向に繰り返される。このように、ニューラルネットワークは、それぞれの層で実施される異なる演算処理が行われる多層の構造を有する。このような構造を有することから、層毎のパラメータの更新を行うために、後の層の計算結果と期待値との差分を求め、その差分を1つ前の層に、その層の差分計算の結果をさらに1つ前の層に伝搬しながら学習が行われる。ここでの説明における1つ前及び1つ先は、順伝播の方向を基準とする。
さらに、深層学習の中で主に画像認識で用いられる演算処理として、畳み込みニューラルネットワークという処理がある。畳み込みニューラルネットワークでは、畳み込み(convolution)と呼ばれる演算が多用される。以下では、「畳込演算」という。例えば、画像認識を行う場合、入力画像上の領域に予め決められたパラメータを各要素として有するフィルタを元画像に配置する。順伝播における入力側はボトムと呼び、出力側はトップと呼ぶ。逆伝播においても位置関係は変わらず出力側をボトムと呼び、入力側をトップと呼ぶ。元画像を含む順伝播方向のときの各層の入力データは、「ボトムデータ」と呼ぶ。深層学習の画像認識において畳込演算を行う場合、入力データは、ビットマップ形式となっており、データを順番に並べて積んでいくと見た目の画像と同じになる。また、入力データを構成する各要素データは、グレースケールの場合であれば濃淡を表し、RGB(Read Green Blue)であれば3色分のデータを表す。また、フィルタは、「重みデータ」と呼ばれる。
そして、フィルタが配置された入力データの各要素と、フィルタの各要素とを乗算したものを合計することで、入力データにおけるフィルタが配置された領域の特徴量を算出する。この元画像へのフィルタの配置を予め決められたフィルタの移動幅を用いて入力データ全体に行い、算出した特徴量をまとめたものが、畳込演算の結果として出力される出力データとなる。このフォワード処理における畳込演算の結果である出力データは、「トップデータ」と呼ぶ。
バックワード処理における畳込演算には、2つの演算が存在する。1つは、フォワード処理の計算結果であるトップデータと期待値との差分と、元画像とを用いて差分パラメータを算出する演算である。フォワード処理の計算結果であるトップデータと期待値との差分は、「トップ差分データ」と呼ばれる。また、算出される差分パラメータは、「重み差分データ」とよばれる。この重み差分データは、重みデータを更新してフォワード処理における計算精度を上げるために用いられる。もう1つは、トップ差分データと重みデータとを使用して、1つ前のバックワード処理の演算用の差分を算出する演算である。1つ前のバックワード処理の演算用の差分は、「ボトム差分データ」と呼ばれる。このボトム差分データが、1つ前の層におけるトップ差分データとして用いられる。
特開2011−113168号公報
しかしながら、畳込演算の総演算数は、以下のように計算できる。例えば、ボトムデータの要素データの数がC’×C’であり、ボトムデータの数がN個あり、重みデータの要素データの数がK×Kであり、トップ差分データの要素数がC×Cであり、トップデータの数をPの場合を考える。さらに、フォワード処理における1つの畳込演算が1つの乗算と1つの加算であるとする。この場合、フォワード処理の総演算数は、P×C×C×N×K×K×2となる。例えば、C=13、N=256、K=3、C=13及びP=256の場合、フォワード処理における総演算数は、256×13×13×256×3×3×2=1990360512である。ここで、重みデータのサイズが大きい場合などでは、高速フーリエ変換(FFT:Fast Fourier Transform)による高速化手法が有効であるが、その条件を満たさない場合、FFTによる演算拘束かの効果を得ることは困難である。そのため、特定の条件に縛られない畳込演算において、画像認識精度制度を維持しつつ演算数を軽減させることは困難である。
開示の技術は、上記に鑑みてなされたものであって、画像認識精度制度を維持しつつ演算数を軽減させる演算処理装置及び演算処理装置の制御方法を提供することを目的とする。
本願の開示する演算処理装置及び演算処理装置の制御方法の一つの態様において、記憶部は、行列を形成する要素データを有する第1データ及び行列を形成する要素データから所定数の要素データを除いた配置形状を有する第2データを記憶する。変換部は、前記第2データの配置形状を基に前記第1データを変換する。畳込演算部は、前記変換部により変換された前記第1データに対して前記第2データをフィルタとして用いて畳み込み演算を行う。
1つの側面では、本発明は、画像認識精度制度を維持しつつ演算数を軽減させることができる。
図1は、畳み込みニューラルネットにおける処理の全体的な流れを説明するための図である。 図2は、フォワード畳込演算及びバックワード畳込演算を説明するための図である。 図3は、演算処理層の詳細を表すブロック図である。 図4は、実施例1に係るフォワード畳込演算を行う畳込演算部の詳細を表すブロック図である。 図5は、フィルタ定義の一例を示す図である。 図6は、ボトムデータの変換の一例を説明するための図である。 図7は、変換後のボトムデータの見た目を表す図である。 図8は、ボトムデータの変換の一例を表す図である。 図9は、ボトムデータの変換の他の例を表す図である。 図10は、新フィルタ定義を用いる場合のフォワード畳込演算を説明するための図である。 図11は、新フィルタ定義を用いる場合のバックワード畳込ボトム差分演算を説明するための図である。 図12は、新フィルタ定義を用いる場合のバックワード畳込重み差分演算を説明するための図である。 図13は、新フィルタ定義を使用する場合の演算処理層における処理のフローチャートである。 図14は、実施例1に係る畳込演算部によるフォワード畳込演算のフローチャートである。 図15は、実施例1に係る畳込演算部によるバックワード畳込演算のフローチャートである。 図16は、実施例2に係るプーリング処理部によるストライド数が2の場合のプーリング処理を説明するための図である。 図17は、実施例2に係るプーリング処理部によるストライド数が1の場合のプーリング処理を説明するための図である。 図18は、実施例3に係る畳込演算部によるフォワード畳込演算を説明するための図である。 図19は、実施例4に係る畳込演算部による新フィルタ定義を用いたフォワード畳込演算の一例を説明するための図である。 図20は、実施例4に係る畳込演算部による新フィルタ定義を用いたフォワード畳込演算の他の例を説明するための図である。 図21は、フォワード畳込演算のプログラムの記述例を説明するための図である。 図22は、バックワード畳込重み差分演算のプログラムの記述例を説明するための図である。 図23は、バックワード畳込ボトム差分演算のプログラムの記述例を説明するための図である。 図24は、演算処理装置のハードウェア構成図である。
以下に、本願の開示する演算処理装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置及び演算処理装置の制御方法が限定されるものではない。
図1は、畳み込みニューラルネット(CNN:Convolutional Neural Network)における処理の全体的な流れを説明するための図である。ここで、本実施例では、画像認識のためのCNNにおける処理について説明する。図1に示すように、演算処理装置1は、入力データ2の入力を受ける。演算処理装置1は、CNNにおいて複数の演算処理層11〜13による処理を実行する。以下では、各演算処理層11〜13を区別しない場合、単に「演算処理層10」という。
各演算処理層10では、矢印P1方向である伝播方向に向かって、特徴点の抽出などの演算処理を行う。以下では、演算処理装置1による矢印P1へ向かう方向の演算処理を、「フォワード演算」という場合がある。また、各演算処理層10では、矢印P2方向である逆伝播方向に向かって、各層における特徴点の抽出の精度を上げるために、矢印P2方向である逆伝播方向に向かって2種類の演算処理を行う。以下では、演算処理装置1による矢印P2へ向かう方向の演算処理を「バックワード演算」という場合がある。
各演算処理層10は、それぞれ特徴量の抽出に用いるフィルタである重みデータをメモリなどの記憶装置から取得する。さらに、第1層である演算処理層11は、メモリなどの記憶装置から入力データ2を取得する。そして、演算処理層11は、入力データ2をボトムデータとして、ボトムデータに対して重みデータを用いて畳込演算を実行する。次に、第2層である演算処理層12は、演算処理層11からの出力データをボトムデータとして、そのボトムデータ及び重みデータを用いて畳込演算を行う。演算処理装置1は、このように各演算処理層10で演算処理を順次行い、第n層である演算処理層13での重みデータを用いた畳込演算の演算結果に対して正規化処理などを施した特徴量を表すデータを出力データ3として出力する。以下では、フォワード演算においてボトムデータと重みデータとを用いた畳込演算を、「フォワード畳込演算」という。
さらに、各演算処理層10は、バックワード演算における畳込み演算の1つとして、期待値と出力データ3との差分であるトップ差分データを用いて重み差分データを求める。例えば、第n層である演算処理層13は、予め決められた期待値を有し、出力データ3と期待値とを比較する。そして、演算処理層13は、出力データ3と期待値との差分であるトップ差分データを求め、その求めたトップ差分データを入力データとして取得する。次に、演算処理層13は、入力データ及び第n層におけるフォワード畳込演算で用いたボトムデータを用いて重みデータの重みデータの期待値との差分である重み差分データを求める。そして、演算処理層13は、求めた重み差分データを用いて第n層における重みデータを修正する。さらに、演算処理層13は、もう1つのバックワード演算における畳込み演算として、修正した重みデータと出力データ3と期待値との差分とを用いてボトムデータとボトムデータの期待値との差分であるボトム差分データを算出する。
次に、第n−1層の演算処理層10は、演算処理層13において算出されたボトム差分データに逆プーリング処理や逆正規化処理が施されたデータをトップ差分データとして取得する。次に、第n−1層の演算処理層10は、第n−1層におけるフォワード畳込演算で用いたボトムデータとトップ差分データとを用いて重み差分データを算出する。そして、第n−1層の演算処理層10は、求めた重み差分データを用いて第n−1層における重みデータを修正する。さらに、第n−1層の演算処理層10は、修正した重みデータとトップ差分データとを用いて第n−1層におけるボトム差分データを算出する。演算処理装置1は、上述したバックワード演算における畳込演算を第1層まで繰り返す。以下では、バックワード演算における畳込演算を、「バックワード畳込演算」という。
すなわち、矢印P1方向を各層の並び方向として、演算処理装置1は、特定の演算処理層10の1つ先の層の演算処理層10において特定の演算処理層10におけるトップ差分データを算出する。そして、演算処理装置1は、算出したトップ差分データと1つ前の演算処理層10の出力データであるボトムデータとを用いて、特定の演算処理層10における重み差分データを求める。そして、演算処理装置1は、求めた特定の演算処理層10における重み差分データを用いて特定の演算処理層10が使用する重みデータを修正する。さらに、演算処理装置1は、トップ差分データと特定の演算処理層10におけるボトム差分データを算出する。
以下では、バックワード畳込演算において、トップ差分データとボトムデータとを用いて重み差分データを求める演算を、「バックワード畳込重み差分演算」という。さらに、修正された重みデータとトップ差分データとを用いてボトム差分データを算出する演算を、「バックワード畳込ボトム差分演算」という。
演算処理装置1は、各演算処理層10における重みデータの修正及び1つ前の演算処理層におけるトップ差分データの算出を順次繰り返ことにより、各演算処理層10の全ての層の重みデータを演算処理層13の出力データ3の期待値に合わせて修正する。
演算処理装置1は、各層で取得した特徴量を用いて繰り返しパラメータ更新する学習することで、画像認識の精度を向上させ、精度の高い画像認識を行うことができる。また、例えば、音声認識の場合には、入力データ2は音声データとなり、テキストマイニングの場合には入力データ2は単語となる。
ここで、本実施例では、画像データで有るボトムデータを方形に行列として並んだ要素データを有する場合で説明する。以下では、フォワード畳込演算における重みデータの1回の移動量を「ストライド数」という場合がある。
ここで、図2を参照して、係るフォワード畳込演算及びバックワード演算をさらに説明する。図2は、フォワード畳込演算及びバックワード畳込演算を説明するための図である。図2は、入力データ2を用いて演算処理を始める第1層から出力データ206と期待値207からトップ差分データ203を生成する第n層までを表す。ここでは、演算処理層11を第1層とし、演算処理層14を第n−1層とし、演算処理層13を第n層として、第n層まで各演算処理層11〜14における演算を例に記載した。また、図2中の円で記載した処理は演算処理を表す。演算処理F1は、フォワード畳込演算を表す。演算処理F2は、バックワード畳込重み差分演算を表す。また、演算処理F3は、バックワード畳込ボトム差分演算を表す。
演算処理装置1は、演算処理層11において入力データ2及び第1層での重みデータ202に対して演算処理F1で表されるフォワード畳込演算を行い、トップデータ209を算出する。その後は、図示しないが、同様に次の第2層において、前の層において算出されたトップデータ209から取得したボトムデータ201及び第2層での重みデータ202に対して同様に演算処理F1で表されるフォワード畳込演算を行う。各演算処理層10は同様のフォワード演算を繰り返す。そして、最後の第n層である演算処理層13は、同様に演算処理層14において算出されたトップデータ209から取得したボトムデータ201及び第n層での重みデータ202に対して演算処理F1で表されるフォワード畳込演算を行う。
さらに、演算処理層13は、出力データ3と期待値207とを比較して、トップ差分データ203を算出する。ここで、入力データ2は、第2層〜第n層におけるボトムデータ201にあたるため、以下では、第1層のボトムデータ201として扱う。また、第n層の出力データ3は、第1層〜第n−1層におけるトップデータ209にあたる。
バックワード演算の場合、演算処理層13は、トップ差分データ203及びボトムデータ201に対して演算処理F2で表される畳み込みバックワードの重み差分演算を行い、重み差分データ204を算出する。さらに、演算処理層13は、重み差分データ204を用いて重みデータ202を更新する。ここで、図2における一点鎖線の矢印が重みデータ202の更新の処理を表す。具体的には、演算処理装置1は、重み差分データ204に学習率を乗算して、新たな重みデータ202を算出する。さらに、演算処理層13は、フォワード畳込演算で使用した重みデータ202及びトップ差分データ203に対して演算処理F3で表されるバックワード畳込ボトム差分演算を行い、ボトム差分データ205を算出する。
演算処理層14は、演算処理層13が出力したボトム差分データ205から取得したトップ差分データ203及びボトムデータ201に対して演算処理F2で表される畳み込みバックワードの重み差分演算を行い、重み差分データ204を算出する。さらに、演算処理層14は、重み差分データ204を用いて重みデータ202を更新する。さらに、演算処理層14は、フォワード畳込演算で使用した重みデータ202及びトップ差分データ203に対して演算処理F3で表されるバックワード畳込ボトム差分演算を行い、ボトム差分データ205を算出する。各演算処理層10は同様のバックワード演算を繰り返す。そして、最後の第1層である演算処理層11は、同様に第2層で算出されたボトム差分データ205から取得したトップ差分データ203を用いて、バックワード畳込重み差分演算及びバックワード畳込ボトム差分演算を行う。
図3は、演算処理層の詳細を表すブロック図である。演算処理層10は、フォワード演算を実行する機能部として、畳込演算部101、活性化処理部102及びプーリング処理部103を有する。また、演算処理層10は、バックワード演算を実行する機能部として、プーリング処理部104、活性化処理部105及び畳込演算部106を有する。
畳込演算部101は、前段の演算処理層10からの出力データを用いて後述する畳込演算を行う。ここで、図4を参照して、畳込演算部101についてさらに詳細に説明する。図4は、実施例1に係るフォワード畳込演算を行う畳込演算部の詳細を表すブロック図である。図4に示すように、畳込演算部101は、入力データ処理部111、乗算部112、加算部113、出力データ作成部114及び重みデータ記憶部115を有する。
重みデータ記憶部115は、フォワード畳込演算に使用する複数種類のフィルタ定義に対応する重みデータ202を記憶する。本実施例では、重みデータ記憶部115は、図5に示す新フィルタ定義301及びフィルタ定義302を使用して作成された重みデータ202を記憶する。図5は、フィルタ定義の一例を示す図である。フィルタ定義302は、3×3のサイズを有する従来のフィルタ定義である。新フィルタ定義301は、フィルタ定義302に対応する新しいフィルタ定義である。
新フィルタ定義301は、軸311〜314に関して中心に対して対称性を有する。すなわち、新フィルタ定義301は、縦横斜めの方向に対称性を有しており、画像の縦横斜め方向に対する画像認識を精度良く行うことができる。したがって、新フィルタ定義301は、フィルタ定義302を用いた場合に比べて画像認識の精度の低下は少なく、十分に画像認識を行うことができる。
本実施例では、3×3の重みデータ202を用いたが、重みデータ記憶部115は、サイズの異なる重みデータ202を記憶してもよい。例えば、重みデータ記憶部115は、新フィルタ定義303及びフィルタ定義304を記憶してもよい。フィルタ定義304は、5×5のサイズを有する従来のフィルタ定義である。新フィルタ定義303は、フィルタ定義304に対応する新しいフィルタ定義である。新フィルタ定義303も、軸331〜334に関して中心に対して対称性を有する。すなわち、新フィルタ定義303は、フィルタ定義304を用いた場合に比べて画像認識の精度の低下は少なく、十分に画像認識を行うことができる。新フィルタ定義301や303は、行方向及び列方向に同数の要素データが配置された状態から真ん中の行から1つ離れるにしたがい行の含まれる要素データが1つずつのぞかれる。さらに、新フィルタ定義301や303は、要素データを除いた行の半分の位置と要素データを除く前の行の半分の位置とが一致するように行がずらされる。
また、本実施例では、新フィルタ定義301及び303という2種類のフィルタ定義について説明したが、フィルタ定義302や304といった従来のフィルタ定義に比べて要素データの数が少ないものであれば新フィルタ定義はこれに限らない。ただし、新フィルタ定義は、縦横斜めの方向に中心に対して対称性を有することが好ましい。以下では、新フィルタ定義301を使用して作成された重みデータ202を「重みデータ221」という。
入力データ処理部111は、フォワード演算における前段の演算処理層10からボトムデータ201の入力を受ける。このボトムデータ201が、「第1データ」の一例にあたる。そして、入力データ処理部111は、重みデータ記憶部115から重みデータ202を取得する。次に、入力データ処理部111は、図示しない入力装置から入力された操作者からの指示から画像判定に新フィルタ定義301を用いるか否かを判定する。新フィルタ定義301を用いない場合、入力データ処理部111は、フィルタ定義302を使用して作成された重みデータ202を用いることを乗算部112に伝えるとともに、ボトムデータを出力する。
一方、新フィルタ定義301を用いる場合、入力データ処理部111は、入力されたボトムデータ201が新フィルタ定義301に対応するデータか否かを判定する。ボトムデータ201が新フィルタ定義301に対応するデータの場合、入力データ処理部111は、新フィルタ定義301を使用して作成された重みデータ221を用いることを乗算部112に伝えるとともに、ボトムデータを出力する。この重みデータ221が、「第2データ」の一例にあたる。
これに対して、ボトムデータ201が新フィルタ定義301に対応していないデータの場合、入力データ処理部111は、ボトムデータ201を新フィルタ定義301に合わせて変換する。図6は、ボトムデータの変換の一例を説明するための図である。
本実施例では、入力データ処理部111は、ボトムデータ201の隔行について、隣接する要素データとの平均を算出して、要素データの位置に格納する。例えば、図6に示す8×8の要素データb00〜b63を有するボトムデータ201の場合について説明する。入力データ処理部111は、1行目を飛ばして2行目を先頭に隔行を変更する行とする。
まず、入力データ処理部111は、2行目の要素データb08と要素データb09との平均である要素データnb08を算出し、要素データb08の位置に格納する。次に、入力データ処理部111は、要素データb09と要素データb10との平均である要素データnbv09を算出し、要素データb09の位置に格納する。このように、入力データ処理部111は、隣合う2つの要素データの平均値を若番の要素データの位置に格納することを要素データb08〜b15まで繰り返す。ただし、要素データb15に関しては、右隣に次の要素データb16が存在しない。そこで、要素データb15の右隣りには、平均を出すための要素データとして値が0である要素データが隣に存在するものとして計算を行う。すなわち、入力データ処理部111は、要素データb15と0の要素データとの平均である要素データnb15を算出し、要素データb15の位置に格納する。このように、入力データ処理部111は、変換後の2行目の要素データnb08〜nb15を算出する。
同様に、入力データ処理部111は、4,6及び8行目の要素データnb24〜nb31,nb40〜nb47及びnb56〜nb63を算出する。これにより、入力データ処理部111は、ボトムデータ201を変換したボトムデータ211を作成する。以下では、ボトムデータ211の全ての要素データを表す場合には要素データb00〜nb63と表記する。
図7は、変換後のボトムデータの見た目を表す図である。ボトムデータ211の要素データb00〜nb63は、各ドットに割り当てた状態で配置される。すなわち、演算処理装置1は、変換したボトムデータ211を用いてフォワード畳込演算を行う。ただし、画像としての実際の見た目は、変換を行った各行の要素データnb08〜nb15,nb24〜nb31,nb40〜nb47及びnb56〜nb63が右側にドットの半分ずつずらされたボトムデータ210となる。すなわち、見た目は、図7に示すように、ボトムデータ211の見た目はボトムデータ210として表すことができる。以下では、分かり易いように、変換後のボトムデータ211を見た目のボトムデータ210を用いて説明する。
ここで、図8及び9を参照して、さらに具体的にボトムデータ201の変換について説明する。図8は、ボトムデータの変換の一例を表す図である。また、図9は、ボトムデータの変換の他の例を表す図である。
例えば、図8のように、ボトムデータ201として漢数字の三が入力データ処理部111に入力された場合で説明する。この場合、ボトムデータ201の2行目に三の一番上の線が存在し、5行目に三の真ん中の線が存在し、8行目に三の一番下の線が存在する。各要素データb00〜b63は、濃淡情報30で表される値を有する。ボトムデータ201において三を表す要素データ以外の要素データは、白色を表す0を値として有する。さらに、ボトムデータ201において三を表す要素データは、黒を表す値255を有する。
入力データ処理部111は、2行目の要素データb08〜b15の隣り合うデータの平均を算出して、変換後の要素データnb08〜nb15を算出する。この場合、要素データnb08は、値127を有する。また、要素データnb09〜nb13は、値255を有する。また、要素データnb14は、値127を有する。さらに、要素データnb15は、値として0を有する。
また、入力データ処理部111は、4及び6行目の要素データb24〜b31及びb40〜b47の隣り合うデータの平均を算出して、変換後の要素データnb24〜nb31及びnb40〜nb47を算出する。この場合、4及び6行目は要素データb24〜b31及びb40〜b47は全て値が0であるので、変換後の要素データnb24〜nb31及びnb40〜nb47も全て値が0である。
さらに、入力データ処理部111は、8行目の要素データb56〜b63の隣り合うデータの平均を算出して、変換後の要素データnb56〜nb63を算出する。この場合、要素データnb56〜nb62は、値255を有する。また、要素データnb64は、値127を有する。
入力データ処理部111は、漢数字の三を表す画像であるボトムデータ201を変換する。その場合、変換後のボトムデータ210は、図8に示すように、濃淡にわずかな違いが存在する漢数字の三を表す画像となる。
次に、図9のように、ボトムデータ201として対角線の画像が入力データ処理部111に入力された場合で説明する。この場合、ボトムデータ201の対角線に線が存在する。この場合も、各要素データb00〜b63は、図8における濃淡情報30で表される値を有する。対角線を表す要素データb00,b09,b18,b27,b36,b45,b54及びb63が、グレーを表す値を有し、他の要素データは値として0を有する。
そして、入力データ処理部111は、要素データb08〜b15,b24〜b31,b40〜b47及びb56〜b63の隣り合うデータの平均を算出し、要素データnb08〜nb15,nb24〜nb31,nb40〜nb47及びnb56〜nb63を求める。この場合、要素データnb08,nb09,nb26,nb27nb44,nb45,nb62及びnb63は、要素データb08〜b15,b24〜b31,b40〜b47及びb56〜b63の半分の値を有する。また、要素データnb10〜nb15,nb24〜nb25,nb28〜nb31,nb40〜nb43,nb46〜nb47及びnb56〜nb61は値として0を有する。
この場合、入力データ処理部111は、対角線を表す画像であるボトムデータ201を変換する。その場合、変換後のボトムデータ210は、図9に示すように、濃淡にわずかな違いが存在する対角線を表す画像となる。
このように、入力データ処理部111により変換されることで作成されるボトムデータ210は、縦横方向及び斜め方向に変換前のボトムデータ201と同じ画像として用いることが可能な画像となる。画像は縦線、横線及び斜め線の組み合わせでほぼ表すことが可能であるため、変換後のボトムデータ210は、変換前のボトムデータ201と同様の画像として使用可能である。
そして、入力データ処理部111は、変換後のボトムデータ210を乗算部112へ出力する。さらに、入力データ処理部111は、重みデータ221を用いることを乗算部112へ通知する。
ここで、図1における第1層の演算処理層11においては、入力データ処理部111は、外部から入力された入力データ2をボトムデータ201として使用するため、ボトムデータ201が新フィルタ定義301に対応していない場合がある。その場合に、入力データ処理部111は、ボトムデータ201を新フィルタ定義301に合わせるために変換する。これに対して、図1における第2層以降の演算処理層12〜13では、前段の演算処理層10から出力されるトップデータ209は既に新フィルタ定義301に対応しているので、入力データ処理部111は、変換を行わずにそのまま乗算部112へボトムデータ201を出力することができる。この入力データ処理部111が、「変換部」の一例にあたる。
乗算部112は、新フィルタ定義301を用いない場合、フィルタ定義302を使用して作成された重みデータ202の使用の通知を入力データ処理部111から受ける。さらに、乗算部112は、変換を行っていないボトムデータ201の入力を受ける。
乗算部112は、フィルタ定義302を使用して作成された重みデータ202とボトムデータ201と用いて通常のフォワード畳込演算における各要素データの乗算を行う。そして、乗算部112は、乗算結果を加算部113へ出力する。
また、新フィルタ定義301を用いる場合、乗算部112は、重みデータ221の使用の通知を入力データ処理部111から受ける。さらに、乗算部112は、新フィルタ定義301に対応したボトムデータ201又は新フィルタ定義301に対応するように変換されたボトムデータ210の入力を受ける。そして、乗算部112は、入力されたボトムデータ201又は210と重みデータ221とを用いてフォワード畳込演算における各要素データの乗算を行う。
例えば、変換後とボトムデータ210を用いる場合の乗算方法を、図10を参照して説明する。図10は、新フィルタ定義を用いる場合のフォワード畳込演算を説明するための図である。ここでは、重みデータ221の1回の移動量であるストライド数が1の場合で説明する。また、以下では、図10におけるボトムデータ210の列が伸びる方向、すなわち縦の方向を「列方向」と言い、行が伸びる方向、すなわち横の方向を「行方向」と言う。
乗算部112は、図10に示すボトムデータ210の入力を受ける。さらに、乗算部112は、図10に示す重みデータ221を重みデータ記憶部115から取得する。そして、乗算部112は、最初にボトムデータ210の1列目に重みデータ221の一列目を一致させ、且つ、重みデータ221の各要素データがボトムデータ210のより若い番号の要素データに重なるように重みデータ221を配置する。例えば、図10の場合、乗算部112は、要素データw00が要素データb01に一致し、要素データw02が要素データnb09に一致し、要素データw05が要素データb17に一致するように重みデータ221を配置する。そして、乗算部112は、ボトムデータ210と重みデータ221との重なった各要素データ同士を乗算し、各乗算結果を加算部113へ出力する。以下では、ボトムデータ210上の所定の位置に重みデータ221を配置し、重なった各要素データを乗算する計算を「トップデータ209の1つの要素データに対する乗算」という。
次に、乗算部112は、ストライド数である1つの要素データ分だけ重みデータ221をボトムデータ210上で行方向に移動する。そして、乗算部112は、移動した位置でトップデータ209の1つの要素データに対する乗算を行い、各乗算結果を加算部113へ出力する。このように、乗算部112は、計算完了後にストライド数ずつ行方向に重みデータ221を移動させ、トップデータ209の1つの要素データに対する乗算を繰返す。そして、重みデータ221が行方向の最後尾まで移動すると、次の計算では、乗算部112は、重みデータ221を列方向にストライド数である1つの要素データ分だけ移動させ、さらに、行方向の先頭の位置に重みデータ221を戻す。そして、乗算部112は、行方向に重みデータ221を移動させてトップデータ209の1つの要素データに対する乗算を繰返す。乗算部112は、重みデータ221の最下行がボトムデータ210の最下行に一致し、且つ、重みデータ221がボトムデータ210の最後尾に移動するまで、トップデータ209の1つの要素データに対する乗算を繰返す。
例えば、図10におけるボトムデータ210の太線枠で囲まれた位置に重みデータ221を配置して計算を行う場合を説明する。ここでは、各要素データの乗算を符号のみで表す。乗算部112は、1つのトップデータ209に対する乗算として、w00×nb09,w01×nb10,w02×b17,w03×b18,w04×b19,w05×nb25及びw06×nb26を行う。そして、乗算部112は、各乗算結果を加算部113へ出力する。
加算部113は、乗算結果の入力を乗算部112から受ける。そして、加算部113は、1つのトップデータ209に対する乗算の乗算結果それぞれを加算して合計を算出する。以下では、1つのトップデータ209に対する乗算の乗算結果の加算を、「トップデータ209の1つの要素データに対する加算」という。そして、加算部113は、加算結果を出力データ作成部114へ出力する。加算部113は、乗算部112が行ったトップデータ209の1つの要素データに対する乗算の全てに対して、トップデータ209の1つの要素データに対する加算を繰り返し、加算結果を出力データ作成部114へ出力する。
例えば、図10におけるボトムデータ210の太線枠で囲まれた位置に重みデータ221を配置された場合について説明する。加算部113は、w00×nb09,w01×nb10,w02×n17,w03×b18,w04×b19,w05×nb25及びw06×nb26の入力を乗算部112から受ける。そして、加算部113は、w00×nb09+w01×nb10+w02×b17+w03×b18+w04×b19+w05×nb25+w06×nb26を算出する。
出力データ作成部114は、トップデータ209の1つの要素データに対する加算の加算結果の入力を加算部113から受ける。そして、出力データ作成部114は、トップデータ209の先頭から順に、取得した加算結果の割り当てを繰り返す。例えば、出力データ作成部114は、図10におけるボトムデータ210の太線枠で囲まれた位置に重みデータ221を配置された場合、取得した加算結果を要素データt18とする。すなわち、w00×nb09+w01×nb10+w02×n17+w03×n18+w04×n19+w05×nb25+w06×nb26が、トップデータ209の要素データt18にあたる。出力データ作成部114は、このように取得した加算結果のトップデータ209の各要素データへの割当を繰り返してトップデータ209を生成する。そして、出力データ作成部114は、生成したトップデータ209を活性化処理部102へ出力する。以下では、トップデータ209の1つの要素データに対する乗算及び加算、並びに、その加算結果のトップデータ209の要素データの割当をまとめて、「トップデータ209の1つの要素データに対する和積演算」という。乗算部112、加算部113及び出力データ作成部114が、「畳込演算部」の一例にあたる。
ここで、従来のフィルタ定義302を用いた場合、畳込演算部101は、トップデータ209の1つの要素データに対する和積演算において、9回の乗算と9個の乗算結果の加算を行う。これに対して、新フィルタ定義301を用いた場合、畳込演算部101は、トップデータ209の1つの要素データに対する和積演算において、7回の乗算と7個の乗算結果の加算を行う。したがって、乗算数及び加算する値の数共に、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて小さくなる。すなわち、フォワード畳込演算の場合、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて、使用する記憶領域を小さくすることができ、計算効率も向上させることができる。
図3に戻って説明を続ける。畳込演算部106は、活性化処理部105により逆正規化処理が施されたデータに対してバックワード畳込演算を行う。ここで、畳込演算部106によるバックワード畳込演算についてさらに詳細に説明する。まず、図11を参照して、バックワード畳込ボトム差分演算について説明する。図11は、新フィルタ定義を用いる場合のバックワード畳込ボトム差分演算を説明するための図である。
ここでは、図10で用いた8×8のボトムデータ201を変換したボトムデータ210と重みデータ221とを用いてフォワード畳込演算を行った場合で説明する。この場合、畳込演算部106は、フォワード畳込演算により求められた図10のトップデータ209の配置形状と同じ配置形状、すなわち隔行で1つ要素分ずつずれたデータの配置形状の見た目を有するトップ差分データ203の入力を活性化処理部105から受ける。ここで、トップ差分データ203も、トップデータ209の配置形状と同じ配置形状を有する。また、バックワード畳込ボトム差分演算で算出されるボトム差分データ205は、ボトムデータ201と同じ配置形状を有する。トップ差分データ203は、要素データtd00〜td63を有する。また、ボトム差分データ205は、要素データbd00〜nbd63を有する。
畳込演算部106は、図11に示すトップ差分データ203の入力を受ける。そして、畳込演算部106は、最初にトップ差分データ203の1列目に重みデータ221の一列目を一致させ、且つ、重みデータ221の各要素データがトップ差分データ203のより若い番号の要素データに重なるように重みデータ221を配置する。例えば、図11の場合、畳込演算部106は、要素データw00が要素データtd01に一致し、要素データw02が要素データtd09に一致し、要素データw05が要素データtd17に一致するように重みデータ221を配置する。そして、畳込演算部106は、トップ差分データ203と重みデータ221との重なった各要素データ同士を乗算する。さらに、畳込演算部106は、乗算結果のそれぞれを加算し合計を算出する。そして、畳込演算部106は、算出した加算結果をボトム差分データ205の要素データbd00とする。
次に、畳込演算部106は、ストライド数である1つの要素データ分だけ重みデータ221をトップ差分データ203上で行方向に移動する。そして、畳込演算部106は、移動した位置で1つのボトム差分データ205に対する乗算を行い、乗算結果を加算して合計を算出する。このように、畳込演算部106は、計算完了後にストライド数ずつ行方向に重みデータ221を移動させ、乗算及び加算を繰返す。そして、重みデータ221が行方向の最後尾まで移動すると、次の計算では、畳込演算部106は、重みデータ221を列方向にストライド数である1つの要素データ分だけ移動させ、さらに、行方向の先頭の位置に重みデータ221を戻す。そして、畳込演算部106は、行方向に重みデータ221を移動させつつ乗算及び加算を繰返す。畳込演算部106は、重みデータ221の最下行がトップ差分データ203の最下行に一致し、且つ、重みデータ221がトップ差分データ203の最後尾に移動するまで、乗算及び加算を繰返す。そして、畳込演算部106は、乗算及び加算結果をボトム差分データ205の要素データb01〜nb63の番号順に割り当てていく。以下では、トップ差分データ203上の所定の位置に重みデータ221を配置した状態での、乗算及び加算、並びに、ボトム差分データ205の要素データb00〜nb63に割り当てる演算を、まとめて「ボトム差分データ205の1つの要素データに対する和積演算」という。
例えば、図11におけるトップ差分データ203の太線枠で囲まれた位置に重みデータ221を配置して計算を行う場合を説明する。ここでは、各要素データの乗算を符号のみで表す。畳込演算部106は、ボトム差分データ205の1つの要素データに対する和積演算として、w00×td09+w01×td10+w02×td17+w03×td18+w04×td19+w05×td25+w06×td26を要素データbd18とする。
ここで、従来のフィルタ定義302を用いた場合、畳込演算部101は、ボトム差分データ205の1つの要素データに対する和積演算において、9回の乗算と9個の乗算結果の加算を行う。これに対して、新フィルタ定義301を用いた場合、畳込演算部101は、ボトム差分データ205の1つの要素データに対する和積演算において、7回の乗算と7個の乗算結果の加算を行う。したがって、乗算数及び加算する値の数共に、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて小さくなる。すなわち、バックワード畳込ボトム差分演算の場合も、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて、使用する記憶領域を小さくすることができ、計算効率も向上させることができる。
次に、図12を参照して、バックワード畳込重み差分演算を説明する。図12は、新フィルタ定義を用いる場合のバックワード畳込重み差分演算を説明するための図である。フォワード畳込重差分演算で算出される重み差分データ204は、重みデータ221の配置形状と同じ配置形状を有する。重み差分データ204は、要素データwd00〜wd07を有する。
畳込演算部106は、フォワード畳込演算で使用したボトムデータ210を取得する。また、畳込演算部106は、図12に示すトップ差分データ203の入力を受ける。次に、畳込演算部106は、ボトムデータ210が重み差分データ204を算出するサイズを有するか否かを判定する。サイズが小さい場合、畳込演算部106は、ボトムデータ210の周りに値が0の要素データ212を付加する。以下では、要素データ212を付加したボトムデータ210を単にボトムデータ210という。
次に、畳込演算部106は、最初にボトムデータ210の1列目にトップ差分データ203の一列目を一致させ、且つ、トップ差分データ203の各要素データがボトムデータ210のより若い番号の要素データに重なるようにトップ差分データ203を配置する。例えば、畳込演算部106は、ボトムデータ210の太線枠に一致するようにトップ差分データ203を配置する。そして、畳込演算部106は、ボトムデータ210とトップ差分データ203との重なった各要素データ同士を乗算する。さらに、畳込演算部106は、乗算結果のそれぞれを加算し合計を算出する。そして、畳込演算部106は、算出した加算結果を重み差分データ204の要素データw00とする。
次に、畳込演算部106は、ストライド数である1つの要素データ分だけトップ差分データ203をボトムデータ210上で行方向に移動する。そして、畳込演算部106は、移動した位置で要素データ同士の乗算を行い、乗算結果を加算して合計を算出する。このように、畳込演算部106は、計算完了後にストライド数ずつ行方向にトップ差分データ203を移動させ、乗算及び加算を繰返す。そして、トップ差分データ203が行方向の最後尾まで移動すると、次の計算では、畳込演算部106は、トップ差分データ203を列方向にストライド数である1つの要素データ分だけ移動させ、さらに、行方向の先頭の位置にトップ差分データ203を戻す。そして、畳込演算部106は、行方向にトップ差分データ203を移動させつつ乗算及び加算を繰返す。畳込演算部106は、トップ差分データ203の最下行がボトムデータ210の最下行に一致し、且つ、トップ差分データ203がボトムデータ210の最後尾に移動するまで、乗算及び加算を繰返す。そして、畳込演算部106は、乗算及び加算結果を重み差分データ204の要素データw01〜w07の番号順に割り当てていく。以下では、ボトムデータ210上の所定の位置にトップ差分データ203を配置した状態での、乗算及び加算、並びに、重み差分データ204の要素データw00〜w07に割り当てる演算を、まとめて「重み差分データ204の1つの要素データに対する和積演算」という。
例えば、図12におけるボトムデータ210の太線枠で囲まれた位置にトップ差分データ203を配置して計算を行う場合を説明する。ここでは、各要素データの乗算を符号のみで表す。畳込演算部106は、重み差分データ204の1つの要素データに対する和積演算として、以下の計算を行う。畳込演算部106は、td00×0+・・・+td07×0+td08×b00+・・・+td15×b07+td16×0+td17×nb08+・・・+td23×nb14+・・・+td56×b48+・・・td63×b55を算出する。そして、畳込演算部106は、演算結果を要素データwd00とする。
ここで、従来のフィルタ定義302を用いた場合、畳込演算部101は、重み差分データ204の1つの要素データに対する和積演算を9回行う。これに対して、新フィルタ定義301を用いた場合、畳込演算部101は、重み差分データ204の1つの要素データに対する和積演算は7回で済む。したがって、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて計算回数を減らすことができる。すなわち、バックワード畳込重み差分演算の場合も、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて、使用する記憶領域を小さくすることができ、計算効率も向上させることができる。
図3に戻って説明を続ける。活性化処理部102は、畳込演算部101から出力されたトップデータを正規化する。プーリング処理部103は、活性化処理部102により正規化されたトップデータに対して要素データの間引や統合を行うことで、微小な位置変化に対して応答を不変化する。このプーリング処理部103が行う処理をプーリング処理という。そして、プーリング処理部103は、プーリング処理を施したトップデータを次の段の演算処理層10へ出力する。プーリング処理部103は、データに加えた処理を表すタグ151をプーリング処理部104へ出力する。
プーリング処理部104は、実施した応答のプーリング処理を表すタグ151の入力をプーリング処理部103から受ける。また、プーリング処理部104は、後段の演算処理層10からボトム差分データの入力を受ける。そして、プーリング処理部104は、取得したボトム差分データにタグ151により特定されるプーリング処理の逆処理を施す。このプーリング処理部104が行う処理を逆プーリング処理という。活性化処理部105は、プーリング処理部104により逆プーリング処理が施されたデータに対して活性化処理を施す。
さらに、以上では、演算処理装置1の学習時の動作について説明したが、演算処理装置1は、学習により取得した重みデータ202を用いて入力データ2の認識を行う。そこで、各演算処理層10における認識の処理について説明する。
畳込演算部101は、ボトムデータの入力を受ける。そして、学習で取得した重みデータを使用してフォワード畳込演算を行う。そして、活性化処理部102及びプーリング処理部103は、トップデータに対して正規化などのプーリング処理を行う。その後、プーリング処理部103は、処理を施したトップデータを次の演算処理層10へ出力する。このようなフォワード畳込演算を各演算処理層10で繰返して、演算処理装置1は、最終的に認識用の出力データ3を取得する。
次に、図13を参照して、新フィルタ定義301を使用する場合の演算処理層における処理の流れについて説明する。図13は、新フィルタ定義を使用する場合の演算処理層における処理のフローチャートである。
第1層の演算処理層11における入力データ処理部111は、入力データ2に対して隔行の隣り合う要素データの平均を算出して一方の要素データとして、新フィルタ定義301に合うボトムデータ210を生成する(ステップS1)。そして、入力データ処理部111は、ボトムデータ210を乗算部112へ出力する。
乗算部112は、ボトムデータ210の入力を入力データ処理部111から受ける。そして、乗算部112、加算部113及び出力データ作成部114は、トップデータ209の1つの要素データに対する和積演算を繰返してフォワード畳込演算を行う(ステップS2)。そして、出力データ作成部114は、演算結果であるトップデータ209を出力する。
活性化処理部102及びプーリング処理部103は、出力データ作成部114から出力されたトップデータ209に対して正規化を施すプーリング処理といったフォワード他処理演算を行う(ステップS3)。そして、プーリング処理部103は、処理を施したデータを第2層の演算処理層12へ出力する。
第2〜第n−1層の演算処理層10及び第n層の演算処理層13は、フォワード畳込演算及びフォワード他処理演算を含む同様の処理を実行する(ステップS4)。
次に、第n層の演算処理層13は、出力データ3と期待値207とを比較する(ステップS5)。
次に、第n層の演算処理層13のプーリング処理部104及び活性化処理部105は、比較結果に対して、逆プーリング処理を含むバックワード他処理演算を行う(ステップS6)。そして、活性化処理部105は、処理を施したデータをトップ差分データ203として畳込演算部106へ出力する。
次に、第n層の演算処理層13の畳込演算部106は、トップ差分データ203の入力を活性化処理部105から受ける。そして、畳込演算部106は、トップ差分データ203、重みデータ202及びボトムデータ210を用いてバックワード畳込演算を行う(ステップS7)。畳込演算部106は、重みデータ202を更新する。さらに、畳込演算部106は、求めたボトム差分データ205を第n−1層の演算処理層10へ出力する。
第n−1〜3層の演算処理層10、第2層の演算処理層12及び第1層の演算処理層11は、バックワード他処理演算及びバックワード畳込演算を含む同様の処理を実行する(ステップS8)。これにより、第n−1〜3層の演算処理層10、第2層の演算処理層12及び第1層の演算処理層11の重みデータ202が更新される。
次に、図14を参照して、畳込演算部101によるフォワード畳込演算の流れについて説明する。図14は、実施例1に係る畳込演算部によるフォワード畳込演算のフローチャートである。
入力データ処理部111は、新フィルタ定義301を使用するか否かを判定する(ステップS101)。新フィルタ定義301を使用しない場合(ステップS101:否定)、入力データ処理部111は、入力データをそのままボトムデータ201として乗算部112へ出力する。乗算部112、加算部113及び出力データ作成部114は、通常のフォワード畳込演算を実行し(ステップS102)、フォワード畳込演算を終了する。
これに対して、新フィルタ定義301を使用する場合(ステップS101:肯定)、入力データ処理部111は、新フィルタ定義301に対応する重みデータ221を重みデータ記憶部115から取得する(ステップS103)。
次に、入力データ処理部111は、入力データが新フィルタ定義301に対応するか否かを判定する(ステップS104)。入力データが新フィルタ定義301に対応しない場合(ステップS104:否定)、入力データ処理部111は、前層における処理結果の入力データを隔行で平均化したデータを演算に使用するボトムデータ201とする(ステップS105)。
入力データが新フィルタ定義301に対応する場合(ステップS104:肯定)、入力データ処理部111は、前層における処理結果の入力データをそのまま演算に使用するボトムデータ201とする(ステップS106)。
入力データ処理部111は、新フィルタ定義301に対応するボトムデータ201を乗算部112へ出力する。乗算部112、加算部113及び出力データ作成部114は、入力されたボトムデータ201と新フィルタ定義301に対応した重みデータ221とを用いてフォワード畳込演算を実行する(ステップS107)。
次に、図15を参照して、畳込演算部106によるバックワード畳込演算の流れについて説明する。図15は、実施例1に係る畳込演算部によるバックワード畳込演算のフローチャートである。
畳込演算部106は、新フィルタ定義301を使用するか否かを判定する(ステップS201)。新フィルタ定義301を使用しない場合(ステップS201:否定)、畳込演算部106は、入力データをそのままボトムデータ201として、通常のバックワード畳込演算を実行し(ステップS202)、フォワード畳込演算を終了する。
これに対して、新フィルタ定義301を使用する場合(ステップS201:肯定)、畳込演算部106は、逆伝播方向の最初の層か否かを判定する(ステップS203)。逆伝播方向の最初の層の場合(ステップS203:肯定)、畳込演算部106は、フォワード演算による出力データ3と期待値207との差分に対してバックワード他処理が施されたデータをトップ差分データ203として取得する(ステップS204)。
これに対して、逆伝播方向の最初の層以外の層の場合(ステップS203:否定)、畳込演算部106は、前層から出力されたボトム差分データ205に対してバックワード他処理が施されたデータをトップ差分データ203として取得する(ステップS205)。
そして、畳込演算部106は、ボトムデータ201、新フィルタ定義301を使用した重みデータ221及びトップ差分データ203を用いてバックワード重み差分演算及びバックワードボトム差分演算を実行する(ステップS206)。
以上に説明したように、本実施例に係る演算処理装置は、従来の正方形の行列のフィルタ定義よりも要素データの数が少ない新フィルタ定義を用いてフォワード畳込演算及びバックワード畳込演算を行う。次の表はフィルタサイズに応じた従来のフィルタ定義と新フィルタ定義との演算量の比を表す表である。ここで、新フィルタ定義は、中央の行から端の行に向かって1つずつ要素データを減らし、且つ、各行の半分の位置が要素データを減らす前の半分の位置に一致するようにずらすことで生成される定義である。
Figure 0006794854
このように、本実施例に係る演算処理装置は、フォワード畳込演算及びバックワード畳込演算における演算量を削減することができる。ここで、本実施例に係る演算処理装置は、入力データを変換する演算を行うが、入力データを変換する演算数は、畳込演算において削減される演算数より少ないため、演算量を低減することができる。また、本実施例に係る演算処理装置は、データ量削減によってメモリスループットの削減にも寄与することができる。高速フーリエ変換による高速化手法を用いるための条件を満たさないフィルタを用いる場合でも、本実施例に係る演算処理装置は、フォワード畳込演算及びバックワード畳込演算における演算量を削減することができる。したがって、本実施例に係る演算処理装置は、深層学習の演算において、使用する記憶装置の容量を抑えつつ演算効率を向上させることができる。
特に、3×3のサイズのフィルタは、深層学習では多用されるフィルタであり、その3×3のサイズのフィルタにおいても実施例で説明したように演算数が削減される。
また、本実施例に係る演算処理装置では、重みデータを小さくすることができ、フォワード畳込演算及びバックワード畳込演算におけるデータ量を少なく抑えることができる。
次に、実施例2について説明する。本実施例に係る演算処理装置は、新フィルタ定義に合わせてボトムデータを変換した場合に、そのボトムデータを用いて算出されたデータをそのまま使用してプーリング処理を行う。本実例に係る演算処理装置も、図1及び2で表される。以下では、実施例1と同様の各部の機能については説明を省略する。
図16は、実施例2に係るプーリング処理部によるストライド数が2の場合のプーリング処理を説明するための図である。
プーリング処理部103は、畳込演算部101が出力したトップデータ209に対して活性化処理部102により正規化されたデータの入力を受ける。ここでは、8×8のボトムデータ201及び新フィルタ定義301を用いてフォワード畳込演算が行われた場合で説明する。すなわち、プーリング処理部103は、図16に示すデータ401の入力を受ける。ここでは、データ401は、要素データi00〜i63を有する。要素データi00〜i63は、それぞれトップデータ209の要素データt00〜t63に対応する。
プーリング処理部103は、図16のデータ401上に示した太線枠411をプーリングサイズとして記憶する。そして、プーリング処理部103は、最初に、太線枠411の上の行がデータ401の1行目の最も若番の要素データに一致するように配置する。そして、太線枠411に含まれる要素データi00,i01,i08及びi09を取得し、取得した要素データの平均や最大値の選択などのプーリング処理を行い値を取得する。そして、プーリング処理部103は、取得した値を出力するデータ402の要素データp00とする。
次に、プーリング処理部103は、太線枠411を要素データ2つ分だけ行方向に進めながら、プーリング処理を行い値を取得していく。そして、太線枠411がデータ410の行の最後尾に達すると、プーリング処理部103は、要素データ2つ分だけ列方向に太線枠411を移動し、且つ、行の先頭に太線枠411を戻す。その後、プーリング処理部103は、太線枠411を要素データ2つ分だけ行方向に進めながら、同様のプーリング処理を繰返して値を取得する処理を、太線枠411の下の行がデータ401の一番下の行の最後尾に達するまで繰返す。そして、プーリング処理部103は、取得した値をそれぞれ出力するデータ402の要素データp01〜p15としていく。
例えば、太線枠411が図16で示すデータ401上の位置に配置された場合、プーリング処理部103は、要素データi18,i19,i26及びi27を取得する。そして、プーリング処理部103は、要素データi18,i19,i26及びi27を用いてプーリング処理を行い値を取得する。その後、プーリング処理部103は、取得した値をデータ402の要素データp05とする。
プーリング処理部103は、要素データp00〜p15を取得してデータ402を完成させる。その後、プーリング処理部103は、データ402を次の演算処理層10へ出力する。
図17は、実施例2に係るプーリング処理部によるストライド数が1の場合のプーリング処理を説明するための図である。ストライド数が1の場合、プーリングの対象が1行ずつ下がるため、データ401のような配置形状の場合、2つの異なるプーリングサイズを用いる。
プーリング処理部103は、図17のデータ401上に示した太線枠412及び413をプーリングサイズとして記憶する。そして、プーリング処理部103は、データ402の奇数行の要素データを算出する場合、太線枠413のプーリングサイズを用いる。また、データ402の奇数行の要素データを算出する場合、太線枠412のプーリングサイズを用いる。
具体定には、プーリング処理部103は、最初に、太線枠413の上の行がデータ401の1行目の最も若番の要素データに一致するように配置する。そして、太線枠413に含まれる要素データi00,i01,i08及びi09を取得し、取得した要素データの平均や最大値の選択などによるプーリング処理を行い値を取得する。そして、プーリング処理部103は、取得した値を出力するデータ402の要素データp00とする。その後、プーリング処理部103は、太線枠413がデータ401の行の最後尾に達するまで、太線枠413を要素データ分ずつ行方向に進めながら、プーリング処理による値の取得を行う。そして、プーリング処理部103は、取得した値をそれぞれ出力するデータ402の要素データp01〜p06とする。
次に、プーリング処理部103は、太線枠412の上の行がデータ401の2行目の最も若番の要素データに一致するように配置する。そして、太線枠411に含まれる要素データi08,i09,i16及びi17を取得し、取得した要素データの平均や最大値の選択などによるプーリング処理を行い値を取得する。そして、プーリング処理部103は、取得した値を出力するデータ402の要素データp07とする。その後、プーリング処理部103は、太線枠412がデータ401の行の最後尾に達するまで、太線枠412を要素データ分ずつ行方向に進めながら、プーリング処理による値の取得を行う。そして、プーリング処理部103は、取得した値をそれぞれ出力するデータ402の要素データp08〜p13とする。
プーリング処理部103は、1行ずつ対象とする行を下げつつ、プーリングサイズを交互に用いてプーリング処理による値の取得を繰返す。そして、プーリング処理部103は、取得した値をそれぞれ出力するデータ402の要素データp14〜p48としていく。
例えば、太線枠412が図17で示すデータ401上の位置に配置された場合、プーリング処理部103は、要素データi09,i10,i17及びi18を取得する。そして、プーリング処理部103は、要素データi09,i10,i17及びi18を用いてプーリング処理を行い値を取得する。その後、プーリング処理部103は、取得した値をデータ402の要素データp08とする。
また、太線枠413が図17で示すデータ401上の位置に配置された場合、プーリング処理部103は、要素データi32,i33,i40及びi41を取得する。そして、プーリング処理部103は、要素データi32,i33,i40及びi41を用いてプーリング処理を行い値を取得する。その後、プーリング処理部103は、取得した値をデータ402の要素データp28とする。
プーリング処理部103は、要素データp00〜p48を取得してデータ402を完成させる。その後、プーリング処理部103は、データ402を次の演算処理層10へ出力する。
以上に説明したように、本実施例に係る演算処理装置は、フォワード畳込演算の演算結果であるトップデータをそのまま用いてプーリング処理を行うことができる。したがって、新フィルタ定義に合わせてボトムデータを変換してフォワード畳込演算を行った場合でも、処理を増やさずにプーリング処理を行うことができ、ネットワーク全体として演算処理の効率を向上させることができる。
次に、実施例3について説明する。本実施例に係る演算処理装置は、新フィルタ定義に合わせてボトムデータを変換した場合に、入力されるデータと出力するデータとを同じ大きさにするパディングを行う。本実例に係る演算処理装置も、図1〜4で表される。以下では、実施例1と同様の各部の機能については説明を省略する。
図18は、実施例3に係る畳込演算部によるフォワード畳込演算を説明するための図である。ここでは、8×8のボトムデータ201及び新フィルタ定義301を使用した重みデータ221を用いてフォワード畳込演算を行う場合で説明する。
入力データ処理部111は、ボトムデータ201の入力を受ける。そして、入力データ処理部111は、ボトムデータ201を新フィルタ定義221に合わせて変換しボトムデータ210とする。
そして、入力データ処理部111は、ボトムデータ210の周りに図18に示すように値が0である要素データ213を付加し、ボトムデータ214を生成する。このボトムデータ210の周りに値が0である要素データ213を付加する処理が0パディングである。これにより、入力データ処理部111は、トップ差分データ203のサイズをボトムデータ210のサイズと一致させる。そして、入力データ処理部111は、ボトムデータ214を乗算部112へ出力する。
乗算部112は、ボトムデータ214の入力を入力データ処理部111から受ける。そして、乗算部112は、ボトムデータ214に対して、重みデータ221を用いてフォワード畳込演算を実行する。これにより、乗算部112は、ボトムデータ210の要素データb00〜nb63と同数のトップデータ209の要素データt00〜t63を算出する。
ここで、8×8の行列のボトムデータ201の場合、0パディングを行うには36個の要素データ213を用いる。これに対して、ボトムデータ210の場合、0パディングを行うには34個の要素データ213を用いる。すなわち、ボトムデータ210を用いた方が、変換前のボトムデータ201に比べて、0パディングに用いる要素データ213が少なくて済む。
以上に説明したように、本実施例に係る演算処理装置は、新フィルタ定義に合わせた変換後のボトムデータに対して0パディングを行いフォワード畳込演算を行う。この場合、変換前のボトムデータに対して0パディングを行うよりも少ない数の要素データの付加で済み、データ容量を小さくできるとともに演算効率を向上させることができる。
次に、実施例4について説明する。本実施例に係る演算処理装置は、3次元データに対して新フィルタ定義を用いてフォワード畳込演算及びバックワード畳込演算を行う。本実例に係る演算処理装置も、図1〜4で表される。本実施例に係る各部は、同様の符号を有する実施例1の各部と同様の処理を3次元データに対して実行する機能を有する。
図19は、実施例4に係る畳込演算部による新フィルタ定義を用いたフォワード畳込演算の一例を説明するための図である。重みデータ記憶部115は、3次元の新フィルタ定義を使用した重みデータ222を記憶する。ここで、重みデータ222に対応する従来のフィルタ定義は、3×3×3に要素データが並んだ立方体である。重みデータ222は、x〜z方向の正面図が実施例1の新フィルタ定義301と同様のデータの配置形状を有する。
入力データ処理部111は、8×8×8の立方体であるボトムデータ201の入力を受ける。そして、入力データ処理部111は、ボトムデータ201の図19の座標に対応するy軸方向及びz軸方向に並ぶ隣合う要素データを平均化する。これにより、入力データ処理部111は、ボトムデータ201のy軸方向及びz軸方向に隔行ずつ要素データの半分だけずらした見た目を有するボトムデータ210を生成する。そして、入力データ処理部111は、生成したボトムデータ210を乗算部112へ出力する。
乗算部112は、ボトムデータ210の入力を受ける。そして、乗算部112は、新フィルタ定義を使用した重みデータ222をボトムデータ210に対して用いて、フォワード畳込演算を行う。
また、畳込演算部106は、ボトムデータ210と重みデータ222とを用いたフォワード畳込演算で算出されたトップデータ209の配置形状と同様の配置形状を有するトップ差分データ203の入力を受ける。そして、畳込演算部106は、ボトムデータ210、重みデータ222及び取得したトップ差分データ203を用いてバックワード畳込演算を実行する。
次に、図20を参照して、実施例4に係る畳込演算部106による新フィルタ定義を用いたフォワード畳込演算の他の例を説明する。図20は、実施例4に係る畳込演算部による新フィルタ定義を用いたフォワード畳込演算の他の例を説明するための図である。重みデータ記憶部115は、3次元の新フィルタ定義を使用した重みデータ223を記憶する。この、重みデータ223も、3×3×3に要素データが並んだ立方体に対応する新フィルタ定義である。重みデータ223も、x〜z方向の正面図が実施例1の新フィルタ定義301と同様のデータの配置形状を有する。
入力データ処理部111は、図19の場合と同様にボトムデータ210を生成する。乗算部112は、新フィルタ定義を使用した重みデータ223をボトムデータ210に対して用いて、フォワード畳込演算を行う。また、畳込演算部106は、ボトムデータ210と重みデータ223とを用いたフォワード畳込演算で算出されたトップデータ209と同様のデータの配置形状を有するトップ差分データ203を用いてバックワード畳込演算を行う。
以上に説明したように、本実施例に係る演算処理装置は、3次元データに対しても従来よりも要素データの少ない新フィルタ定義を使用してフォワード畳込演算及びバックワード畳込演算を行う。したがって、本実施例に係る演算処理装置は、3次元データを用いた深層学習の演算において、使用する記憶装置の容量を抑えつつ演算効率を向上させることができる。
(プログラムの記述例)
図21は、フォワード畳込演算のプログラムの記述例を説明するための図である。フォワード畳込演算は、図21に示すようにボトムデータ201(bottom_y)とトップデータ209(top_x)とを用いた演算は掛け算と足し算で表現できる。フォワード畳込演算は、ボトムデータ201のデータ数Ci、トップ差分データ203のデータ数Co、バッチ数mb、ストライド数W及びトップサイズを調節するためのパラメータとなるパッド数padを指定して行なわれる。ここで、トップサイズの調整とは、トップサイズの水増しにあたる。
図22は、バックワード畳込重み差分演算のプログラムの記述例を説明するための図である。バックワード畳込重み差分演算は、図22に示すようにボトムデータ201(bottom_y)とトップ差分データ203(top_x)とを用いた演算は掛け算と足し算で表現できる。この場合、重み差分データ(ew)が算出される。バックワード畳込重み差分演算は、ボトムデータ201のデータ数Ci、トップ差分データ203のデータ数Co、バッチ数mb、ストライド数W及びトップサイズを調節するためのパラメータとなるパッド数padを指定して行なわれる。ここで、トップサイズの調整とは、トップサイズの水増しにあたる。
図23は、バックワード畳込ボトム差分演算のプログラムの記述例を説明するための図である。バックワード畳込ボトム差分演算は、図23に示すようにボトムデータ201(bottom_y)とトップ差分データ203(top_x)と用いた演算は掛け算と足し算で表現できる。この場合、ボトム差分データ205(bottom_ey)が算出される。バックワード畳込ボトム差分演算は、ボトムデータ201のデータ数Ci、トップ差分データ203のデータ数Co、バッチ数mb、ストライド数W及びトップサイズを調節するためのパラメータとなるパッド数padを指定して行なわれる。ここで、トップサイズの調整とは、トップサイズの水増しにあたる。
(ハードウェア構成)
図25は、演算処理装置のハードウェア構成図である。演算処理装置1は、CPU(Central Processing Unit)91、メモリ92、アクセラレータ93及びメモリ94を有する。メモリ92は、CPU91専用のメモリであり、CPU91に含まれてもよい。また、メモリ94は、アクセラレータ93のメモリであり、アクセラレータ93に含まれてもよい。
メモリ92は、OS(Operating System)及び各演算処理層10で使用される学習プログラムを含む各種プログラムを記憶する。また、メモリ92は、入力データ2及び期待値207を記憶する。
CPU91は、メモリ92に格納されたOSを実行する。さらに、CPU91は、メモリ92が有する学習プログラムを含む各種プログラム、並びに、入力データ2、重みデータ202及び期待値207を含む各種データをアクセラレータ93へ出力する。重みデータ202には、使用する新フィルタ定義に応じて重みデータ221などを含む。そして、CPU91は、深層学習の処理実行をアクセラレータ93に指示する。その後、CPU91は、学習後の重みデータ202をアクセラレータ93から取得し、メモリ92に格納された重みデータ202を更新する。
アクセラレータ93は、例えば、GPUやFPGA(Field Programmable Gate Array)などである。アクセラレータ93は、CPU91から入力された学習プログラムを含む各種プログラム、並びに、入力データ2及び期待値207を含む各種データをメモリ94に格納する。そして、アクセラレータ93は、メモリ94に格納した学習プログラムを含む各種プログラム及び各種データを用いて深層学習の処理を実行する。これにより、アクセラレータ93は、図2で例示した演算処理層10の畳込演算部101、活性化処理部102、プーリング処理部103、プーリング処理部104、活性化処理部105及び畳込演算部106の各機能を実現する。アクセラレータ93は、各演算処理層10における学習結果である重みデータ202をCPU91へ出力する。アクセラレータ93は、全ての演算処理層10について同様に処理を実行する。ここで、アクセラレータ93は、各演算処理層10の処理毎にCPU91からデータを取得してもよいし、各演算処理層10の処理に使用するデータをまとめて取得してもよい。
1 演算処理装置
2 入力データ
3 出力データ
10〜14 演算処理層
101,106 畳込演算部
102,105 活性化処理部
103,104 プーリング処理部
111 入力データ処理部
112 乗算部
113 加算部
114 出力データ作成部
115 重みデータ記憶部
201,210,211 ボトムデータ
202,221,222,223 重みデータ
203 トップ差分データ
204 重み差分データ
205 ボトム差分データ
207 期待値
209 トップデータ

Claims (6)

  1. 行列を形成する要素データを有する第1データ及び行列を形成する要素データから所定数の要素データを除いた配置形状を有する第2データを記憶する記憶部と、
    前記第2データの配置形状を基に前記第1データを変換する変換部と、
    前記変換部により変換された前記第1データに対して前記第2データをフィルタとして用いて畳み込み演算を行う畳込演算部と
    を備えたことを特徴とする演算処理装置。
  2. 前記第2データは、縦、横及び斜め方向に関して対称な配置形状を有することを特徴とする請求項1に記載の演算処理装置。
  3. 前記第1データは、行方向及び列方向に同数の要素データを有し、
    前記第2データは、行方向及び列方向に同数の要素データが配置された状態から真ん中の行から1つ離れるにしたがい行の含まれる要素データを1つずつ除き、且つ、要素データを除いた行の半分の位置と要素データを除く前の行の半分の位置とが一致するように要素データが配置された配置形状を有し、
    前記変換部は、前記第1データの隔行の隣り合う要素データを平均化する変換を行う
    ことを特徴とする請求項1又は2に記載の演算処理装置。
  4. 前記畳込演算部による演算結果に含まれる要素データの値をそのまま用いてプーリング処理を実行するプーリング処理部をさらに備えたことを特徴とする請求項1〜3のいずれか一つに記載の演算処理装置。
  5. 前記畳込演算部は、前記第1データの周りを最小の数で囲むように0の値を有する要素データを付加し、0の値を有する要素データを付加した前記第1データに対して前記第2データをフィルタとして用いて畳み込み演算を行い、前記第1データと同数の要素データを有する演算結果を取得することを特徴とする請求項1〜4のいずれか一つに記載の演算処理装置。
  6. 行列を形成する要素データを有する第1データ及び行列を形成する要素データから所定数の要素データを除いた配置形状を有する第2データを記憶する演算処理装置の制御方法であって、
    前記第2データの配置形状を基に前記第1データを変換させ、
    変換された前記第1データに対して前記第2データをフィルタとして用いて畳込演算を行わせる
    ことを特徴とする演算処理装置の制御方法。
JP2017017668A 2017-02-02 2017-02-02 演算処理装置及び演算処理装置の制御方法 Active JP6794854B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017017668A JP6794854B2 (ja) 2017-02-02 2017-02-02 演算処理装置及び演算処理装置の制御方法
US15/877,444 US20180217962A1 (en) 2017-02-02 2018-01-23 Operation processing apparatus and operation processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017017668A JP6794854B2 (ja) 2017-02-02 2017-02-02 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2018124867A JP2018124867A (ja) 2018-08-09
JP6794854B2 true JP6794854B2 (ja) 2020-12-02

Family

ID=62979883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017017668A Active JP6794854B2 (ja) 2017-02-02 2017-02-02 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20180217962A1 (ja)
JP (1) JP6794854B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7173709B2 (ja) * 2017-04-14 2022-11-16 株式会社半導体エネルギー研究所 ニューラルネットワーク回路
US20190392287A1 (en) 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
CN110096310B (zh) * 2018-11-14 2021-09-03 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110096309B (zh) * 2018-11-14 2020-04-14 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
JP7026032B2 (ja) * 2018-10-19 2022-02-25 Kddi株式会社 レコメンドシステム及びレコメンド方法
US11671111B2 (en) 2019-04-17 2023-06-06 Samsung Electronics Co., Ltd. Hardware channel-parallel data compression/decompression
US11880760B2 (en) 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution
CN112133342B (zh) * 2019-06-25 2022-05-06 中电海康集团有限公司 存储器
JP2021022235A (ja) * 2019-07-29 2021-02-18 公益財団法人鉄道総合技術研究所 点滅検出装置および点滅検出方法
CN112639836A (zh) * 2020-02-25 2021-04-09 深圳市大疆创新科技有限公司 数据处理装置、电子设备和数据处理方法
JP2022165250A (ja) * 2021-04-19 2022-10-31 富士通株式会社 プログラム、データ処理方法及びデータ処理装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5900321B2 (ja) * 2012-02-08 2016-04-06 株式会社Jvcケンウッド 画像処理装置、画像処理方法及び画像処理プログラム
JP6700712B2 (ja) * 2015-10-21 2020-05-27 キヤノン株式会社 畳み込み演算装置

Also Published As

Publication number Publication date
JP2018124867A (ja) 2018-08-09
US20180217962A1 (en) 2018-08-02

Similar Documents

Publication Publication Date Title
JP6794854B2 (ja) 演算処理装置及び演算処理装置の制御方法
US10642613B2 (en) Arithmetic processing device for deep learning and control method of the arithmetic processing device for deep learning
KR102347119B1 (ko) 가산기를 이용한 다차원 텐서의 데이터 액세스
US11301546B2 (en) Spatial locality transform of matrices
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
US10642622B2 (en) Arithmetic processing device and control method of the arithmetic processing device
CN110520834B (zh) 替选循环限制
US20190095776A1 (en) Efficient data distribution for parallel processing
US9600763B1 (en) Information processing method, information processing device, and non-transitory recording medium for storing program
TWI678617B (zh) 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備
JP6958027B2 (ja) 演算処理装置及び演算処理装置の制御方法
WO2019119301A1 (zh) 在卷积神经网络模型中确定特征图像的方法和装置
US11580369B2 (en) Inference apparatus, convolution operation execution method, and program
JP2021509747A (ja) ハードウェアベースのプーリングのシステムおよび方法
US20170206089A1 (en) Information processing apparatus and computational method
WO2019085709A1 (zh) 一种应用于卷积神经网络的池化处理的方法及系统
US11164032B2 (en) Method of performing data processing operation
JP2018197906A (ja) 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム
CN109726798B (zh) 一种数据处理方法及装置
JP2019095862A (ja) 演算処理装置
US10229472B2 (en) Image processing apparatus, image processing method, and vehicle control apparatus
JP2017027314A (ja) 並列演算装置、画像処理装置及び並列演算方法
JP6906622B2 (ja) 演算回路および演算方法
US20210312279A1 (en) Information processing apparatus and information processing method
JP2020080048A (ja) 並列処理装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191008

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200930

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201013

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201026

R150 Certificate of patent or registration of utility model

Ref document number: 6794854

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150