JP6794854B2 - Arithmetic processing unit and control method of arithmetic processing unit - Google Patents
Arithmetic processing unit and control method of arithmetic processing unit Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 53
- 238000004364 calculation method Methods 0.000 claims description 162
- 238000011176 pooling Methods 0.000 claims description 95
- 230000008569 process Effects 0.000 claims description 41
- 238000006243 chemical reaction Methods 0.000 claims description 23
- 239000011159 matrix material Substances 0.000 claims description 10
- 238000012935 Averaging Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 42
- 230000004913 activation Effects 0.000 description 18
- 238000013500 data storage Methods 0.000 description 11
- 238000013135 deep learning Methods 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 3
- 101150097128 tag-151 gene Proteins 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Description
本発明は、演算処理装置及び演算処理装置の制御方法に関する。 The present invention relates to an arithmetic processing unit and a control method for the arithmetic processing unit.
演算処理装置に用いられるGPU(Graphic Processing Unit)は、元々は画像処理用のプロセッサであるが、多数の和積演算器を備えることにより行列計算に最適化されているため、機械学習用の処理を行うプロセッサとしても用いられることが多い。そして、深層学習(ディープラーニング)を行う処理においても、GPUが用いられることが一般的である。 The GPU (Graphic Processing Unit) used in the arithmetic processing unit is originally a processor for image processing, but since it is optimized for matrix calculation by having a large number of sum-product arithmetic units, it is a process for machine learning. It is often used as a processor that performs. The GPU is also generally used in the process of performing deep learning.
深層学習では、ニューラルネットワークを用いて処理が行われることが多い。例えば、画像認識の深層学習の場合、与えられた画像が何か判断するフォワード処理及び判断するためのニューラルネットワークのパラメータを更新するためのバックワード処理の2つの処理を有する。深層学習を行う演算処理装置は、フォワード処理での計算結果と期待値との差分を用いてバックワード処理を行い、ニューラルネットワークのパラメータを更新する。そして、演算処理装置は、更新したパラメータを用いてフォワード処理の精度を向上させる。 In deep learning, processing is often performed using a neural network. For example, in the case of deep learning of image recognition, it has two processes, a forward process for determining what a given image is and a backward process for updating the parameters of the neural network for determining. The arithmetic processing unit that performs deep learning performs backward processing using the difference between the calculation result in the forward processing and the expected value, and updates the parameters of the neural network. Then, the arithmetic processing unit improves the accuracy of the forward processing by using the updated parameters.
ニューラルネットワークは複数の層で構成される場合がある。フォワード処理が行われる順伝播では、入力データに対して各層で特徴量の抽出などの演算処理が行われ出力結果となる。そして、バックワード処理が行われる逆伝播では、それぞれの層において、順伝播の結果と期待値との差分を用いて各パラメータを更新する学習が順伝播と逆方向に繰り返される。このように、ニューラルネットワークは、それぞれの層で実施される異なる演算処理が行われる多層の構造を有する。このような構造を有することから、層毎のパラメータの更新を行うために、後の層の計算結果と期待値との差分を求め、その差分を1つ前の層に、その層の差分計算の結果をさらに1つ前の層に伝搬しながら学習が行われる。ここでの説明における1つ前及び1つ先は、順伝播の方向を基準とする。 A neural network may consist of multiple layers. In the forward propagation in which the forward processing is performed, arithmetic processing such as extraction of features is performed on the input data in each layer, and the output result is obtained. Then, in the back propagation in which the backward processing is performed, learning to update each parameter using the difference between the result of the forward propagation and the expected value is repeated in the opposite direction to the forward propagation in each layer. As described above, the neural network has a multi-layer structure in which different arithmetic processes performed in each layer are performed. Since it has such a structure, in order to update the parameters for each layer, the difference between the calculation result of the subsequent layer and the expected value is obtained, and the difference is set to the previous layer and the difference calculation of that layer is performed. Learning is performed while propagating the result of the above to the previous layer. The one before and one ahead in the explanation here are based on the direction of forward propagation.
さらに、深層学習の中で主に画像認識で用いられる演算処理として、畳み込みニューラルネットワークという処理がある。畳み込みニューラルネットワークでは、畳み込み(convolution)と呼ばれる演算が多用される。以下では、「畳込演算」という。例えば、画像認識を行う場合、入力画像上の領域に予め決められたパラメータを各要素として有するフィルタを元画像に配置する。順伝播における入力側はボトムと呼び、出力側はトップと呼ぶ。逆伝播においても位置関係は変わらず出力側をボトムと呼び、入力側をトップと呼ぶ。元画像を含む順伝播方向のときの各層の入力データは、「ボトムデータ」と呼ぶ。深層学習の画像認識において畳込演算を行う場合、入力データは、ビットマップ形式となっており、データを順番に並べて積んでいくと見た目の画像と同じになる。また、入力データを構成する各要素データは、グレースケールの場合であれば濃淡を表し、RGB(Read Green Blue)であれば3色分のデータを表す。また、フィルタは、「重みデータ」と呼ばれる。 Further, as an arithmetic process mainly used in image recognition in deep learning, there is a process called a convolutional neural network. In a convolutional neural network, an operation called convolution is often used. Hereinafter, it is referred to as "convolution operation". For example, in the case of image recognition, a filter having predetermined parameters as each element is arranged in the area on the input image. In forward propagation, the input side is called the bottom and the output side is called the top. Even in back propagation, the positional relationship does not change, and the output side is called the bottom and the input side is called the top. The input data of each layer in the forward propagation direction including the original image is called "bottom data". When the convolution operation is performed in the image recognition of deep learning, the input data is in a bitmap format, and when the data are arranged in order and stacked, the input data becomes the same as the apparent image. Further, each element data constituting the input data represents a shade in the case of gray scale, and represents data for three colors in the case of RGB (Read Green Blue). The filter is also called "weight data".
そして、フィルタが配置された入力データの各要素と、フィルタの各要素とを乗算したものを合計することで、入力データにおけるフィルタが配置された領域の特徴量を算出する。この元画像へのフィルタの配置を予め決められたフィルタの移動幅を用いて入力データ全体に行い、算出した特徴量をまとめたものが、畳込演算の結果として出力される出力データとなる。このフォワード処理における畳込演算の結果である出力データは、「トップデータ」と呼ぶ。 Then, by multiplying each element of the input data in which the filter is arranged and each element of the filter, the feature amount of the area in which the filter is arranged in the input data is calculated. The arrangement of the filter on the original image is performed on the entire input data using the predetermined movement width of the filter, and the calculated feature amount is summarized as the output data output as the result of the convolution operation. The output data that is the result of the convolution operation in this forward processing is called "top data".
バックワード処理における畳込演算には、2つの演算が存在する。1つは、フォワード処理の計算結果であるトップデータと期待値との差分と、元画像とを用いて差分パラメータを算出する演算である。フォワード処理の計算結果であるトップデータと期待値との差分は、「トップ差分データ」と呼ばれる。また、算出される差分パラメータは、「重み差分データ」とよばれる。この重み差分データは、重みデータを更新してフォワード処理における計算精度を上げるために用いられる。もう1つは、トップ差分データと重みデータとを使用して、1つ前のバックワード処理の演算用の差分を算出する演算である。1つ前のバックワード処理の演算用の差分は、「ボトム差分データ」と呼ばれる。このボトム差分データが、1つ前の層におけるトップ差分データとして用いられる。 There are two operations in the convolution operation in backward processing. One is an operation of calculating the difference parameter using the difference between the top data and the expected value, which is the calculation result of the forward processing, and the original image. The difference between the top data and the expected value, which is the calculation result of the forward processing, is called "top difference data". Further, the calculated difference parameter is called "weight difference data". This weight difference data is used to update the weight data to improve the calculation accuracy in the forward processing. The other is an operation of calculating the difference for the operation of the previous backward processing by using the top difference data and the weight data. The difference for the calculation of the previous backward processing is called "bottom difference data". This bottom difference data is used as the top difference data in the previous layer.
しかしながら、畳込演算の総演算数は、以下のように計算できる。例えば、ボトムデータの要素データの数が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による演算拘束かの効果を得ることは困難である。そのため、特定の条件に縛られない畳込演算において、画像認識精度制度を維持しつつ演算数を軽減させることは困難である。 However, the total number of convolution operations can be calculated as follows. For example, the number of element data of bottom data is C'× C', the number of bottom data is N, the number of element data of weight data is K × K, and the number of elements of top difference data is C ×. Consider the case where C is and the number of top data is P. Further, it is assumed that one convolution operation in the forward processing is one multiplication and one addition. In this case, the total number of operations in the forward processing is P × C × C × N × K × K × 2. For example, in the case of C = 13, N = 256, K = 3, C = 13 and P = 256, the total number of operations in the forward processing is 256 × 13 × 13 × 256 × 3 × 3 × 2 = 1990360512. Here, when the size of the weight data is large, the speed-up method by Fast Fourier Transform (FFT) is effective, but when the condition is not satisfied, the effect of calculation constraint by FFT is obtained. It is difficult. Therefore, it is difficult to reduce the number of operations while maintaining the image recognition accuracy system in the convolution operation that is not bound by a specific condition.
開示の技術は、上記に鑑みてなされたものであって、画像認識精度制度を維持しつつ演算数を軽減させる演算処理装置及び演算処理装置の制御方法を提供することを目的とする。 The disclosed technique has been made in view of the above, and an object of the present invention is to provide an arithmetic processing unit and a control method of the arithmetic processing unit that reduce the number of arithmetic operations while maintaining an image recognition accuracy system.
本願の開示する演算処理装置及び演算処理装置の制御方法の一つの態様において、記憶部は、行列を形成する要素データを有する第1データ及び行列を形成する要素データから所定数の要素データを除いた配置形状を有する第2データを記憶する。変換部は、前記第2データの配置形状を基に前記第1データを変換する。畳込演算部は、前記変換部により変換された前記第1データに対して前記第2データをフィルタとして用いて畳み込み演算を行う。 In one embodiment of the arithmetic processing apparatus and the control method of the arithmetic processing apparatus disclosed in the present application, the storage unit excludes a predetermined number of element data from the first data having the element data forming the matrix and the element data forming the matrix. The second data having the arranged shape is stored. The conversion unit converts the first data based on the arrangement shape of the second data. The convolution calculation unit performs a convolution calculation on the first data converted by the conversion unit using the second data as a filter.
1つの側面では、本発明は、画像認識精度制度を維持しつつ演算数を軽減させることができる。 In one aspect, the present invention can reduce the number of operations while maintaining the image recognition accuracy system.
以下に、本願の開示する演算処理装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置及び演算処理装置の制御方法が限定されるものではない。 Hereinafter, examples of the arithmetic processing unit and the control method of the arithmetic processing unit disclosed in the present application will be described in detail with reference to the drawings. The following examples do not limit the arithmetic processing unit and the control method of the arithmetic processing unit disclosed in the present application.
図1は、畳み込みニューラルネット(CNN:Convolutional Neural Network)における処理の全体的な流れを説明するための図である。ここで、本実施例では、画像認識のためのCNNにおける処理について説明する。図1に示すように、演算処理装置1は、入力データ2の入力を受ける。演算処理装置1は、CNNにおいて複数の演算処理層11〜13による処理を実行する。以下では、各演算処理層11〜13を区別しない場合、単に「演算処理層10」という。
FIG. 1 is a diagram for explaining the overall flow of processing in a convolutional neural network (CNN). Here, in this embodiment, the processing in CNN for image recognition will be described. As shown in FIG. 1, the
各演算処理層10では、矢印P1方向である伝播方向に向かって、特徴点の抽出などの演算処理を行う。以下では、演算処理装置1による矢印P1へ向かう方向の演算処理を、「フォワード演算」という場合がある。また、各演算処理層10では、矢印P2方向である逆伝播方向に向かって、各層における特徴点の抽出の精度を上げるために、矢印P2方向である逆伝播方向に向かって2種類の演算処理を行う。以下では、演算処理装置1による矢印P2へ向かう方向の演算処理を「バックワード演算」という場合がある。
In each
各演算処理層10は、それぞれ特徴量の抽出に用いるフィルタである重みデータをメモリなどの記憶装置から取得する。さらに、第1層である演算処理層11は、メモリなどの記憶装置から入力データ2を取得する。そして、演算処理層11は、入力データ2をボトムデータとして、ボトムデータに対して重みデータを用いて畳込演算を実行する。次に、第2層である演算処理層12は、演算処理層11からの出力データをボトムデータとして、そのボトムデータ及び重みデータを用いて畳込演算を行う。演算処理装置1は、このように各演算処理層10で演算処理を順次行い、第n層である演算処理層13での重みデータを用いた畳込演算の演算結果に対して正規化処理などを施した特徴量を表すデータを出力データ3として出力する。以下では、フォワード演算においてボトムデータと重みデータとを用いた畳込演算を、「フォワード畳込演算」という。
Each
さらに、各演算処理層10は、バックワード演算における畳込み演算の1つとして、期待値と出力データ3との差分であるトップ差分データを用いて重み差分データを求める。例えば、第n層である演算処理層13は、予め決められた期待値を有し、出力データ3と期待値とを比較する。そして、演算処理層13は、出力データ3と期待値との差分であるトップ差分データを求め、その求めたトップ差分データを入力データとして取得する。次に、演算処理層13は、入力データ及び第n層におけるフォワード畳込演算で用いたボトムデータを用いて重みデータの重みデータの期待値との差分である重み差分データを求める。そして、演算処理層13は、求めた重み差分データを用いて第n層における重みデータを修正する。さらに、演算処理層13は、もう1つのバックワード演算における畳込み演算として、修正した重みデータと出力データ3と期待値との差分とを用いてボトムデータとボトムデータの期待値との差分であるボトム差分データを算出する。
Further, each
次に、第n−1層の演算処理層10は、演算処理層13において算出されたボトム差分データに逆プーリング処理や逆正規化処理が施されたデータをトップ差分データとして取得する。次に、第n−1層の演算処理層10は、第n−1層におけるフォワード畳込演算で用いたボトムデータとトップ差分データとを用いて重み差分データを算出する。そして、第n−1層の演算処理層10は、求めた重み差分データを用いて第n−1層における重みデータを修正する。さらに、第n−1層の演算処理層10は、修正した重みデータとトップ差分データとを用いて第n−1層におけるボトム差分データを算出する。演算処理装置1は、上述したバックワード演算における畳込演算を第1層まで繰り返す。以下では、バックワード演算における畳込演算を、「バックワード畳込演算」という。
Next, the
すなわち、矢印P1方向を各層の並び方向として、演算処理装置1は、特定の演算処理層10の1つ先の層の演算処理層10において特定の演算処理層10におけるトップ差分データを算出する。そして、演算処理装置1は、算出したトップ差分データと1つ前の演算処理層10の出力データであるボトムデータとを用いて、特定の演算処理層10における重み差分データを求める。そして、演算処理装置1は、求めた特定の演算処理層10における重み差分データを用いて特定の演算処理層10が使用する重みデータを修正する。さらに、演算処理装置1は、トップ差分データと特定の演算処理層10におけるボトム差分データを算出する。
That is, with the arrow P1 direction as the arrangement direction of each layer, the
以下では、バックワード畳込演算において、トップ差分データとボトムデータとを用いて重み差分データを求める演算を、「バックワード畳込重み差分演算」という。さらに、修正された重みデータとトップ差分データとを用いてボトム差分データを算出する演算を、「バックワード畳込ボトム差分演算」という。 In the following, in the backward convolution operation, the operation of obtaining the weight difference data by using the top difference data and the bottom data is referred to as "backward convolution weight difference operation". Further, the operation of calculating the bottom difference data using the corrected weight data and the top difference data is called "backward convolution bottom difference calculation".
演算処理装置1は、各演算処理層10における重みデータの修正及び1つ前の演算処理層におけるトップ差分データの算出を順次繰り返ことにより、各演算処理層10の全ての層の重みデータを演算処理層13の出力データ3の期待値に合わせて修正する。
The
演算処理装置1は、各層で取得した特徴量を用いて繰り返しパラメータ更新する学習することで、画像認識の精度を向上させ、精度の高い画像認識を行うことができる。また、例えば、音声認識の場合には、入力データ2は音声データとなり、テキストマイニングの場合には入力データ2は単語となる。
The
ここで、本実施例では、画像データで有るボトムデータを方形に行列として並んだ要素データを有する場合で説明する。以下では、フォワード畳込演算における重みデータの1回の移動量を「ストライド数」という場合がある。 Here, in this embodiment, the case where the bottom data, which is the image data, has the element data arranged as a matrix in a square will be described. In the following, the amount of movement of weight data at one time in the forward convolution operation may be referred to as “the number of strides”.
ここで、図2を参照して、係るフォワード畳込演算及びバックワード演算をさらに説明する。図2は、フォワード畳込演算及びバックワード畳込演算を説明するための図である。図2は、入力データ2を用いて演算処理を始める第1層から出力データ206と期待値207からトップ差分データ203を生成する第n層までを表す。ここでは、演算処理層11を第1層とし、演算処理層14を第n−1層とし、演算処理層13を第n層として、第n層まで各演算処理層11〜14における演算を例に記載した。また、図2中の円で記載した処理は演算処理を表す。演算処理F1は、フォワード畳込演算を表す。演算処理F2は、バックワード畳込重み差分演算を表す。また、演算処理F3は、バックワード畳込ボトム差分演算を表す。
Here, with reference to FIG. 2, the forward convolution operation and the backward operation will be further described. FIG. 2 is a diagram for explaining a forward convolution operation and a backward convolution operation. FIG. 2 shows from the first layer that starts arithmetic processing using the
演算処理装置1は、演算処理層11において入力データ2及び第1層での重みデータ202に対して演算処理F1で表されるフォワード畳込演算を行い、トップデータ209を算出する。その後は、図示しないが、同様に次の第2層において、前の層において算出されたトップデータ209から取得したボトムデータ201及び第2層での重みデータ202に対して同様に演算処理F1で表されるフォワード畳込演算を行う。各演算処理層10は同様のフォワード演算を繰り返す。そして、最後の第n層である演算処理層13は、同様に演算処理層14において算出されたトップデータ209から取得したボトムデータ201及び第n層での重みデータ202に対して演算処理F1で表されるフォワード畳込演算を行う。
The
さらに、演算処理層13は、出力データ3と期待値207とを比較して、トップ差分データ203を算出する。ここで、入力データ2は、第2層〜第n層におけるボトムデータ201にあたるため、以下では、第1層のボトムデータ201として扱う。また、第n層の出力データ3は、第1層〜第n−1層におけるトップデータ209にあたる。
Further, the
バックワード演算の場合、演算処理層13は、トップ差分データ203及びボトムデータ201に対して演算処理F2で表される畳み込みバックワードの重み差分演算を行い、重み差分データ204を算出する。さらに、演算処理層13は、重み差分データ204を用いて重みデータ202を更新する。ここで、図2における一点鎖線の矢印が重みデータ202の更新の処理を表す。具体的には、演算処理装置1は、重み差分データ204に学習率を乗算して、新たな重みデータ202を算出する。さらに、演算処理層13は、フォワード畳込演算で使用した重みデータ202及びトップ差分データ203に対して演算処理F3で表されるバックワード畳込ボトム差分演算を行い、ボトム差分データ205を算出する。
In the case of the backward calculation, the
演算処理層14は、演算処理層13が出力したボトム差分データ205から取得したトップ差分データ203及びボトムデータ201に対して演算処理F2で表される畳み込みバックワードの重み差分演算を行い、重み差分データ204を算出する。さらに、演算処理層14は、重み差分データ204を用いて重みデータ202を更新する。さらに、演算処理層14は、フォワード畳込演算で使用した重みデータ202及びトップ差分データ203に対して演算処理F3で表されるバックワード畳込ボトム差分演算を行い、ボトム差分データ205を算出する。各演算処理層10は同様のバックワード演算を繰り返す。そして、最後の第1層である演算処理層11は、同様に第2層で算出されたボトム差分データ205から取得したトップ差分データ203を用いて、バックワード畳込重み差分演算及びバックワード畳込ボトム差分演算を行う。
The
図3は、演算処理層の詳細を表すブロック図である。演算処理層10は、フォワード演算を実行する機能部として、畳込演算部101、活性化処理部102及びプーリング処理部103を有する。また、演算処理層10は、バックワード演算を実行する機能部として、プーリング処理部104、活性化処理部105及び畳込演算部106を有する。
FIG. 3 is a block diagram showing details of the arithmetic processing layer. The
畳込演算部101は、前段の演算処理層10からの出力データを用いて後述する畳込演算を行う。ここで、図4を参照して、畳込演算部101についてさらに詳細に説明する。図4は、実施例1に係るフォワード畳込演算を行う畳込演算部の詳細を表すブロック図である。図4に示すように、畳込演算部101は、入力データ処理部111、乗算部112、加算部113、出力データ作成部114及び重みデータ記憶部115を有する。
The
重みデータ記憶部115は、フォワード畳込演算に使用する複数種類のフィルタ定義に対応する重みデータ202を記憶する。本実施例では、重みデータ記憶部115は、図5に示す新フィルタ定義301及びフィルタ定義302を使用して作成された重みデータ202を記憶する。図5は、フィルタ定義の一例を示す図である。フィルタ定義302は、3×3のサイズを有する従来のフィルタ定義である。新フィルタ定義301は、フィルタ定義302に対応する新しいフィルタ定義である。
The weight
新フィルタ定義301は、軸311〜314に関して中心に対して対称性を有する。すなわち、新フィルタ定義301は、縦横斜めの方向に対称性を有しており、画像の縦横斜め方向に対する画像認識を精度良く行うことができる。したがって、新フィルタ定義301は、フィルタ定義302を用いた場合に比べて画像認識の精度の低下は少なく、十分に画像認識を行うことができる。
The
本実施例では、3×3の重みデータ202を用いたが、重みデータ記憶部115は、サイズの異なる重みデータ202を記憶してもよい。例えば、重みデータ記憶部115は、新フィルタ定義303及びフィルタ定義304を記憶してもよい。フィルタ定義304は、5×5のサイズを有する従来のフィルタ定義である。新フィルタ定義303は、フィルタ定義304に対応する新しいフィルタ定義である。新フィルタ定義303も、軸331〜334に関して中心に対して対称性を有する。すなわち、新フィルタ定義303は、フィルタ定義304を用いた場合に比べて画像認識の精度の低下は少なく、十分に画像認識を行うことができる。新フィルタ定義301や303は、行方向及び列方向に同数の要素データが配置された状態から真ん中の行から1つ離れるにしたがい行の含まれる要素データが1つずつのぞかれる。さらに、新フィルタ定義301や303は、要素データを除いた行の半分の位置と要素データを除く前の行の半分の位置とが一致するように行がずらされる。
In this embodiment, 3 × 3
また、本実施例では、新フィルタ定義301及び303という2種類のフィルタ定義について説明したが、フィルタ定義302や304といった従来のフィルタ定義に比べて要素データの数が少ないものであれば新フィルタ定義はこれに限らない。ただし、新フィルタ定義は、縦横斜めの方向に中心に対して対称性を有することが好ましい。以下では、新フィルタ定義301を使用して作成された重みデータ202を「重みデータ221」という。
Further, in this embodiment, two types of filter definitions, the
入力データ処理部111は、フォワード演算における前段の演算処理層10からボトムデータ201の入力を受ける。このボトムデータ201が、「第1データ」の一例にあたる。そして、入力データ処理部111は、重みデータ記憶部115から重みデータ202を取得する。次に、入力データ処理部111は、図示しない入力装置から入力された操作者からの指示から画像判定に新フィルタ定義301を用いるか否かを判定する。新フィルタ定義301を用いない場合、入力データ処理部111は、フィルタ定義302を使用して作成された重みデータ202を用いることを乗算部112に伝えるとともに、ボトムデータを出力する。
The input data processing unit 111 receives the input of the
一方、新フィルタ定義301を用いる場合、入力データ処理部111は、入力されたボトムデータ201が新フィルタ定義301に対応するデータか否かを判定する。ボトムデータ201が新フィルタ定義301に対応するデータの場合、入力データ処理部111は、新フィルタ定義301を使用して作成された重みデータ221を用いることを乗算部112に伝えるとともに、ボトムデータを出力する。この重みデータ221が、「第2データ」の一例にあたる。
On the other hand, when the
これに対して、ボトムデータ201が新フィルタ定義301に対応していないデータの場合、入力データ処理部111は、ボトムデータ201を新フィルタ定義301に合わせて変換する。図6は、ボトムデータの変換の一例を説明するための図である。
On the other hand, when the
本実施例では、入力データ処理部111は、ボトムデータ201の隔行について、隣接する要素データとの平均を算出して、要素データの位置に格納する。例えば、図6に示す8×8の要素データb00〜b63を有するボトムデータ201の場合について説明する。入力データ処理部111は、1行目を飛ばして2行目を先頭に隔行を変更する行とする。
In this embodiment, the input data processing unit 111 calculates the average with the adjacent element data for the interval of the
まず、入力データ処理部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を算出する。 First, the input data processing unit 111 calculates the element data nb08, which is the average of the element data b08 and the element data b09 in the second line, and stores the element data nb08 at the position of the element data b08. Next, the input data processing unit 111 calculates the element data nbv09, which is the average of the element data b09 and the element data b10, and stores it at the position of the element data b09. In this way, the input data processing unit 111 repeats storing the average value of the two adjacent element data at the position of the younger element data from the element data b08 to b15. However, regarding the element data b15, the next element data b16 does not exist on the right side. Therefore, on the right side of the element data b15, the calculation is performed assuming that the element data having a value of 0 exists next to the element data for calculating the average. That is, the input data processing unit 111 calculates the element data nb15, which is the average of the element data b15 and the element data of 0, and stores the element data nb15 at the position of the element data b15. In this way, the input data processing unit 111 calculates the element data nb08 to nb15 of the second line after conversion.
同様に、入力データ処理部111は、4,6及び8行目の要素データnb24〜nb31,nb40〜nb47及びnb56〜nb63を算出する。これにより、入力データ処理部111は、ボトムデータ201を変換したボトムデータ211を作成する。以下では、ボトムデータ211の全ての要素データを表す場合には要素データb00〜nb63と表記する。
Similarly, the input data processing unit 111 calculates the element data nb24 to nb31, nb40 to nb47, and nb56 to nb63 on the fourth, sixth, and eighth lines. As a result, the input data processing unit 111 creates the
図7は、変換後のボトムデータの見た目を表す図である。ボトムデータ211の要素データb00〜nb63は、各ドットに割り当てた状態で配置される。すなわち、演算処理装置1は、変換したボトムデータ211を用いてフォワード畳込演算を行う。ただし、画像としての実際の見た目は、変換を行った各行の要素データnb08〜nb15,nb24〜nb31,nb40〜nb47及びnb56〜nb63が右側にドットの半分ずつずらされたボトムデータ210となる。すなわち、見た目は、図7に示すように、ボトムデータ211の見た目はボトムデータ210として表すことができる。以下では、分かり易いように、変換後のボトムデータ211を見た目のボトムデータ210を用いて説明する。
FIG. 7 is a diagram showing the appearance of the bottom data after conversion. The element data b00 to nb63 of the
ここで、図8及び9を参照して、さらに具体的にボトムデータ201の変換について説明する。図8は、ボトムデータの変換の一例を表す図である。また、図9は、ボトムデータの変換の他の例を表す図である。
Here, the conversion of the
例えば、図8のように、ボトムデータ201として漢数字の三が入力データ処理部111に入力された場合で説明する。この場合、ボトムデータ201の2行目に三の一番上の線が存在し、5行目に三の真ん中の線が存在し、8行目に三の一番下の線が存在する。各要素データb00〜b63は、濃淡情報30で表される値を有する。ボトムデータ201において三を表す要素データ以外の要素データは、白色を表す0を値として有する。さらに、ボトムデータ201において三を表す要素データは、黒を表す値255を有する。
For example, as shown in FIG. 8, the case where the Chinese numeral three is input to the input data processing unit 111 as the
入力データ処理部111は、2行目の要素データb08〜b15の隣り合うデータの平均を算出して、変換後の要素データnb08〜nb15を算出する。この場合、要素データnb08は、値127を有する。また、要素データnb09〜nb13は、値255を有する。また、要素データnb14は、値127を有する。さらに、要素データnb15は、値として0を有する。
The input data processing unit 111 calculates the average of the adjacent data of the element data b08 to b15 of the second line, and calculates the element data nb08 to nb15 after conversion. In this case, the element data nb08 has a value of 127. Further, the element data nb09 to nb13 have a value of 255. Further, the element data nb14 has a
また、入力データ処理部111は、4及び6行目の要素データb24〜b31及びb40〜b47の隣り合うデータの平均を算出して、変換後の要素データnb24〜nb31及びnb40〜nb47を算出する。この場合、4及び6行目は要素データb24〜b31及びb40〜b47は全て値が0であるので、変換後の要素データnb24〜nb31及びnb40〜nb47も全て値が0である。 Further, the input data processing unit 111 calculates the average of adjacent data of the element data b24 to b31 and b40 to b47 in the 4th and 6th lines, and calculates the converted element data nb24 to nb31 and nb40 to nb47. .. In this case, since the values of the element data b24 to b31 and b40 to b47 are all 0 in the 4th and 6th lines, the values of the converted element data nb24 to nb31 and nb40 to nb47 are also 0.
さらに、入力データ処理部111は、8行目の要素データb56〜b63の隣り合うデータの平均を算出して、変換後の要素データnb56〜nb63を算出する。この場合、要素データnb56〜nb62は、値255を有する。また、要素データnb64は、値127を有する。
Further, the input data processing unit 111 calculates the average of the adjacent data of the element data b56 to b63 on the eighth line, and calculates the converted element data nb56 to nb63. In this case, the element data nb56 to nb62 have a value of 255. Further, the element data nb64 has a
入力データ処理部111は、漢数字の三を表す画像であるボトムデータ201を変換する。その場合、変換後のボトムデータ210は、図8に示すように、濃淡にわずかな違いが存在する漢数字の三を表す画像となる。
The input data processing unit 111 converts the
次に、図9のように、ボトムデータ201として対角線の画像が入力データ処理部111に入力された場合で説明する。この場合、ボトムデータ201の対角線に線が存在する。この場合も、各要素データb00〜b63は、図8における濃淡情報30で表される値を有する。対角線を表す要素データb00,b09,b18,b27,b36,b45,b54及びb63が、グレーを表す値を有し、他の要素データは値として0を有する。
Next, as shown in FIG. 9, a case where a diagonal image is input to the input data processing unit 111 as
そして、入力データ処理部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を有する。 Then, the input data processing unit 111 calculates the average of the adjacent data of the element data b08 to b15, b24 to b31, b40 to b47 and b56 to b63, and the element data nb08 to nb15, nb24 to nb31, nb40 to nb47 and Find nb56 to nb63. In this case, the element data nb08, nb09, nb26, nb27nb44, nb45, nb62 and nb63 have half the values of the element data b08 to b15, b24 to b31, b40 to b47 and b56 to b63. Further, the element data nb10 to nb15, nb24 to nb25, nb28 to nb31, nb40 to nb43, nb46 to nb47 and nb56 to nb61 have 0 as a value.
この場合、入力データ処理部111は、対角線を表す画像であるボトムデータ201を変換する。その場合、変換後のボトムデータ210は、図9に示すように、濃淡にわずかな違いが存在する対角線を表す画像となる。
In this case, the input data processing unit 111 converts the
このように、入力データ処理部111により変換されることで作成されるボトムデータ210は、縦横方向及び斜め方向に変換前のボトムデータ201と同じ画像として用いることが可能な画像となる。画像は縦線、横線及び斜め線の組み合わせでほぼ表すことが可能であるため、変換後のボトムデータ210は、変換前のボトムデータ201と同様の画像として使用可能である。
In this way, the
そして、入力データ処理部111は、変換後のボトムデータ210を乗算部112へ出力する。さらに、入力データ処理部111は、重みデータ221を用いることを乗算部112へ通知する。
Then, the input data processing unit 111 outputs the converted
ここで、図1における第1層の演算処理層11においては、入力データ処理部111は、外部から入力された入力データ2をボトムデータ201として使用するため、ボトムデータ201が新フィルタ定義301に対応していない場合がある。その場合に、入力データ処理部111は、ボトムデータ201を新フィルタ定義301に合わせるために変換する。これに対して、図1における第2層以降の演算処理層12〜13では、前段の演算処理層10から出力されるトップデータ209は既に新フィルタ定義301に対応しているので、入力データ処理部111は、変換を行わずにそのまま乗算部112へボトムデータ201を出力することができる。この入力データ処理部111が、「変換部」の一例にあたる。
Here, in the
乗算部112は、新フィルタ定義301を用いない場合、フィルタ定義302を使用して作成された重みデータ202の使用の通知を入力データ処理部111から受ける。さらに、乗算部112は、変換を行っていないボトムデータ201の入力を受ける。
When the
乗算部112は、フィルタ定義302を使用して作成された重みデータ202とボトムデータ201と用いて通常のフォワード畳込演算における各要素データの乗算を行う。そして、乗算部112は、乗算結果を加算部113へ出力する。
The
また、新フィルタ定義301を用いる場合、乗算部112は、重みデータ221の使用の通知を入力データ処理部111から受ける。さらに、乗算部112は、新フィルタ定義301に対応したボトムデータ201又は新フィルタ定義301に対応するように変換されたボトムデータ210の入力を受ける。そして、乗算部112は、入力されたボトムデータ201又は210と重みデータ221とを用いてフォワード畳込演算における各要素データの乗算を行う。
Further, when the
例えば、変換後とボトムデータ210を用いる場合の乗算方法を、図10を参照して説明する。図10は、新フィルタ定義を用いる場合のフォワード畳込演算を説明するための図である。ここでは、重みデータ221の1回の移動量であるストライド数が1の場合で説明する。また、以下では、図10におけるボトムデータ210の列が伸びる方向、すなわち縦の方向を「列方向」と言い、行が伸びる方向、すなわち横の方向を「行方向」と言う。
For example, the multiplication method after conversion and when the
乗算部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つの要素データに対する乗算」という。
The
次に、乗算部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つの要素データに対する乗算を繰返す。
Next, the
例えば、図10におけるボトムデータ210の太線枠で囲まれた位置に重みデータ221を配置して計算を行う場合を説明する。ここでは、各要素データの乗算を符号のみで表す。乗算部112は、1つのトップデータ209に対する乗算として、w00×nb09,w01×nb10,w02×b17,w03×b18,w04×b19,w05×nb25及びw06×nb26を行う。そして、乗算部112は、各乗算結果を加算部113へ出力する。
For example, a case where the
加算部113は、乗算結果の入力を乗算部112から受ける。そして、加算部113は、1つのトップデータ209に対する乗算の乗算結果それぞれを加算して合計を算出する。以下では、1つのトップデータ209に対する乗算の乗算結果の加算を、「トップデータ209の1つの要素データに対する加算」という。そして、加算部113は、加算結果を出力データ作成部114へ出力する。加算部113は、乗算部112が行ったトップデータ209の1つの要素データに対する乗算の全てに対して、トップデータ209の1つの要素データに対する加算を繰り返し、加算結果を出力データ作成部114へ出力する。
The
例えば、図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を算出する。
For example, a case where the
出力データ作成部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が、「畳込演算部」の一例にあたる。
The output data creation unit 114 receives the input of the addition result of the addition for one element data of the
ここで、従来のフィルタ定義302を用いた場合、畳込演算部101は、トップデータ209の1つの要素データに対する和積演算において、9回の乗算と9個の乗算結果の加算を行う。これに対して、新フィルタ定義301を用いた場合、畳込演算部101は、トップデータ209の1つの要素データに対する和積演算において、7回の乗算と7個の乗算結果の加算を行う。したがって、乗算数及び加算する値の数共に、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて小さくなる。すなわち、フォワード畳込演算の場合、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて、使用する記憶領域を小さくすることができ、計算効率も向上させることができる。
Here, when the
図3に戻って説明を続ける。畳込演算部106は、活性化処理部105により逆正規化処理が施されたデータに対してバックワード畳込演算を行う。ここで、畳込演算部106によるバックワード畳込演算についてさらに詳細に説明する。まず、図11を参照して、バックワード畳込ボトム差分演算について説明する。図11は、新フィルタ定義を用いる場合のバックワード畳込ボトム差分演算を説明するための図である。
The explanation will be continued by returning to FIG. The
ここでは、図10で用いた8×8のボトムデータ201を変換したボトムデータ210と重みデータ221とを用いてフォワード畳込演算を行った場合で説明する。この場合、畳込演算部106は、フォワード畳込演算により求められた図10のトップデータ209の配置形状と同じ配置形状、すなわち隔行で1つ要素分ずつずれたデータの配置形状の見た目を有するトップ差分データ203の入力を活性化処理部105から受ける。ここで、トップ差分データ203も、トップデータ209の配置形状と同じ配置形状を有する。また、バックワード畳込ボトム差分演算で算出されるボトム差分データ205は、ボトムデータ201と同じ配置形状を有する。トップ差分データ203は、要素データtd00〜td63を有する。また、ボトム差分データ205は、要素データbd00〜nbd63を有する。
Here, the case where the forward convolution operation is performed using the
畳込演算部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とする。
The
次に、畳込演算部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つの要素データに対する和積演算」という。
Next, the
例えば、図11におけるトップ差分データ203の太線枠で囲まれた位置に重みデータ221を配置して計算を行う場合を説明する。ここでは、各要素データの乗算を符号のみで表す。畳込演算部106は、ボトム差分データ205の1つの要素データに対する和積演算として、w00×td09+w01×td10+w02×td17+w03×td18+w04×td19+w05×td25+w06×td26を要素データbd18とする。
For example, a case where the
ここで、従来のフィルタ定義302を用いた場合、畳込演算部101は、ボトム差分データ205の1つの要素データに対する和積演算において、9回の乗算と9個の乗算結果の加算を行う。これに対して、新フィルタ定義301を用いた場合、畳込演算部101は、ボトム差分データ205の1つの要素データに対する和積演算において、7回の乗算と7個の乗算結果の加算を行う。したがって、乗算数及び加算する値の数共に、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて小さくなる。すなわち、バックワード畳込ボトム差分演算の場合も、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて、使用する記憶領域を小さくすることができ、計算効率も向上させることができる。
Here, when the
次に、図12を参照して、バックワード畳込重み差分演算を説明する。図12は、新フィルタ定義を用いる場合のバックワード畳込重み差分演算を説明するための図である。フォワード畳込重差分演算で算出される重み差分データ204は、重みデータ221の配置形状と同じ配置形状を有する。重み差分データ204は、要素データwd00〜wd07を有する。
Next, the backward convolution weight difference calculation will be described with reference to FIG. FIG. 12 is a diagram for explaining the backward convolution weight difference calculation when the new filter definition is used. The
畳込演算部106は、フォワード畳込演算で使用したボトムデータ210を取得する。また、畳込演算部106は、図12に示すトップ差分データ203の入力を受ける。次に、畳込演算部106は、ボトムデータ210が重み差分データ204を算出するサイズを有するか否かを判定する。サイズが小さい場合、畳込演算部106は、ボトムデータ210の周りに値が0の要素データ212を付加する。以下では、要素データ212を付加したボトムデータ210を単にボトムデータ210という。
The
次に、畳込演算部106は、最初にボトムデータ210の1列目にトップ差分データ203の一列目を一致させ、且つ、トップ差分データ203の各要素データがボトムデータ210のより若い番号の要素データに重なるようにトップ差分データ203を配置する。例えば、畳込演算部106は、ボトムデータ210の太線枠に一致するようにトップ差分データ203を配置する。そして、畳込演算部106は、ボトムデータ210とトップ差分データ203との重なった各要素データ同士を乗算する。さらに、畳込演算部106は、乗算結果のそれぞれを加算し合計を算出する。そして、畳込演算部106は、算出した加算結果を重み差分データ204の要素データw00とする。
Next, the
次に、畳込演算部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つの要素データに対する和積演算」という。
Next, the
例えば、図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とする。
For example, a case where the
ここで、従来のフィルタ定義302を用いた場合、畳込演算部101は、重み差分データ204の1つの要素データに対する和積演算を9回行う。これに対して、新フィルタ定義301を用いた場合、畳込演算部101は、重み差分データ204の1つの要素データに対する和積演算は7回で済む。したがって、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて計算回数を減らすことができる。すなわち、バックワード畳込重み差分演算の場合も、新フィルタ定義301を用いた場合の方が、従来のフィルタ定義302を用いた場合に比べて、使用する記憶領域を小さくすることができ、計算効率も向上させることができる。
Here, when the
図3に戻って説明を続ける。活性化処理部102は、畳込演算部101から出力されたトップデータを正規化する。プーリング処理部103は、活性化処理部102により正規化されたトップデータに対して要素データの間引や統合を行うことで、微小な位置変化に対して応答を不変化する。このプーリング処理部103が行う処理をプーリング処理という。そして、プーリング処理部103は、プーリング処理を施したトップデータを次の段の演算処理層10へ出力する。プーリング処理部103は、データに加えた処理を表すタグ151をプーリング処理部104へ出力する。
The explanation will be continued by returning to FIG. The
プーリング処理部104は、実施した応答のプーリング処理を表すタグ151の入力をプーリング処理部103から受ける。また、プーリング処理部104は、後段の演算処理層10からボトム差分データの入力を受ける。そして、プーリング処理部104は、取得したボトム差分データにタグ151により特定されるプーリング処理の逆処理を施す。このプーリング処理部104が行う処理を逆プーリング処理という。活性化処理部105は、プーリング処理部104により逆プーリング処理が施されたデータに対して活性化処理を施す。
The pooling processing unit 104 receives an input of a
さらに、以上では、演算処理装置1の学習時の動作について説明したが、演算処理装置1は、学習により取得した重みデータ202を用いて入力データ2の認識を行う。そこで、各演算処理層10における認識の処理について説明する。
Further, although the operation of the
畳込演算部101は、ボトムデータの入力を受ける。そして、学習で取得した重みデータを使用してフォワード畳込演算を行う。そして、活性化処理部102及びプーリング処理部103は、トップデータに対して正規化などのプーリング処理を行う。その後、プーリング処理部103は、処理を施したトップデータを次の演算処理層10へ出力する。このようなフォワード畳込演算を各演算処理層10で繰返して、演算処理装置1は、最終的に認識用の出力データ3を取得する。
The
次に、図13を参照して、新フィルタ定義301を使用する場合の演算処理層における処理の流れについて説明する。図13は、新フィルタ定義を使用する場合の演算処理層における処理のフローチャートである。
Next, with reference to FIG. 13, the processing flow in the arithmetic processing layer when the
第1層の演算処理層11における入力データ処理部111は、入力データ2に対して隔行の隣り合う要素データの平均を算出して一方の要素データとして、新フィルタ定義301に合うボトムデータ210を生成する(ステップS1)。そして、入力データ処理部111は、ボトムデータ210を乗算部112へ出力する。
The input data processing unit 111 in the
乗算部112は、ボトムデータ210の入力を入力データ処理部111から受ける。そして、乗算部112、加算部113及び出力データ作成部114は、トップデータ209の1つの要素データに対する和積演算を繰返してフォワード畳込演算を行う(ステップS2)。そして、出力データ作成部114は、演算結果であるトップデータ209を出力する。
The
活性化処理部102及びプーリング処理部103は、出力データ作成部114から出力されたトップデータ209に対して正規化を施すプーリング処理といったフォワード他処理演算を行う(ステップS3)。そして、プーリング処理部103は、処理を施したデータを第2層の演算処理層12へ出力する。
The
第2〜第n−1層の演算処理層10及び第n層の演算処理層13は、フォワード畳込演算及びフォワード他処理演算を含む同様の処理を実行する(ステップS4)。
The
次に、第n層の演算処理層13は、出力データ3と期待値207とを比較する(ステップS5)。
Next, the
次に、第n層の演算処理層13のプーリング処理部104及び活性化処理部105は、比較結果に対して、逆プーリング処理を含むバックワード他処理演算を行う(ステップS6)。そして、活性化処理部105は、処理を施したデータをトップ差分データ203として畳込演算部106へ出力する。
Next, the pooling processing unit 104 and the
次に、第n層の演算処理層13の畳込演算部106は、トップ差分データ203の入力を活性化処理部105から受ける。そして、畳込演算部106は、トップ差分データ203、重みデータ202及びボトムデータ210を用いてバックワード畳込演算を行う(ステップS7)。畳込演算部106は、重みデータ202を更新する。さらに、畳込演算部106は、求めたボトム差分データ205を第n−1層の演算処理層10へ出力する。
Next, the
第n−1〜3層の演算処理層10、第2層の演算処理層12及び第1層の演算処理層11は、バックワード他処理演算及びバックワード畳込演算を含む同様の処理を実行する(ステップS8)。これにより、第n−1〜3層の演算処理層10、第2層の演算処理層12及び第1層の演算処理層11の重みデータ202が更新される。
The
次に、図14を参照して、畳込演算部101によるフォワード畳込演算の流れについて説明する。図14は、実施例1に係る畳込演算部によるフォワード畳込演算のフローチャートである。
Next, with reference to FIG. 14, the flow of the forward convolution calculation by the
入力データ処理部111は、新フィルタ定義301を使用するか否かを判定する(ステップS101)。新フィルタ定義301を使用しない場合(ステップS101:否定)、入力データ処理部111は、入力データをそのままボトムデータ201として乗算部112へ出力する。乗算部112、加算部113及び出力データ作成部114は、通常のフォワード畳込演算を実行し(ステップS102)、フォワード畳込演算を終了する。
The input data processing unit 111 determines whether or not to use the new filter definition 301 (step S101). When the
これに対して、新フィルタ定義301を使用する場合(ステップS101:肯定)、入力データ処理部111は、新フィルタ定義301に対応する重みデータ221を重みデータ記憶部115から取得する(ステップS103)。
On the other hand, when the
次に、入力データ処理部111は、入力データが新フィルタ定義301に対応するか否かを判定する(ステップS104)。入力データが新フィルタ定義301に対応しない場合(ステップS104:否定)、入力データ処理部111は、前層における処理結果の入力データを隔行で平均化したデータを演算に使用するボトムデータ201とする(ステップS105)。
Next, the input data processing unit 111 determines whether or not the input data corresponds to the new filter definition 301 (step S104). When the input data does not correspond to the new filter definition 301 (step S104: negation), the input data processing unit 111 uses the data obtained by averaging the input data of the processing results in the previous layer at intervals as the
入力データが新フィルタ定義301に対応する場合(ステップS104:肯定)、入力データ処理部111は、前層における処理結果の入力データをそのまま演算に使用するボトムデータ201とする(ステップS106)。 When the input data corresponds to the new filter definition 301 (step S104: affirmative), the input data processing unit 111 uses the input data of the processing result in the previous layer as the bottom data 201 (step S106).
入力データ処理部111は、新フィルタ定義301に対応するボトムデータ201を乗算部112へ出力する。乗算部112、加算部113及び出力データ作成部114は、入力されたボトムデータ201と新フィルタ定義301に対応した重みデータ221とを用いてフォワード畳込演算を実行する(ステップS107)。
The input data processing unit 111 outputs the
次に、図15を参照して、畳込演算部106によるバックワード畳込演算の流れについて説明する。図15は、実施例1に係る畳込演算部によるバックワード畳込演算のフローチャートである。
Next, with reference to FIG. 15, the flow of the backward convolution operation by the
畳込演算部106は、新フィルタ定義301を使用するか否かを判定する(ステップS201)。新フィルタ定義301を使用しない場合(ステップS201:否定)、畳込演算部106は、入力データをそのままボトムデータ201として、通常のバックワード畳込演算を実行し(ステップS202)、フォワード畳込演算を終了する。
The
これに対して、新フィルタ定義301を使用する場合(ステップS201:肯定)、畳込演算部106は、逆伝播方向の最初の層か否かを判定する(ステップS203)。逆伝播方向の最初の層の場合(ステップS203:肯定)、畳込演算部106は、フォワード演算による出力データ3と期待値207との差分に対してバックワード他処理が施されたデータをトップ差分データ203として取得する(ステップS204)。
On the other hand, when the
これに対して、逆伝播方向の最初の層以外の層の場合(ステップS203:否定)、畳込演算部106は、前層から出力されたボトム差分データ205に対してバックワード他処理が施されたデータをトップ差分データ203として取得する(ステップS205)。
On the other hand, in the case of a layer other than the first layer in the back propagation direction (step S203: negation), the
そして、畳込演算部106は、ボトムデータ201、新フィルタ定義301を使用した重みデータ221及びトップ差分データ203を用いてバックワード重み差分演算及びバックワードボトム差分演算を実行する(ステップS206)。
Then, the
以上に説明したように、本実施例に係る演算処理装置は、従来の正方形の行列のフィルタ定義よりも要素データの数が少ない新フィルタ定義を用いてフォワード畳込演算及びバックワード畳込演算を行う。次の表はフィルタサイズに応じた従来のフィルタ定義と新フィルタ定義との演算量の比を表す表である。ここで、新フィルタ定義は、中央の行から端の行に向かって1つずつ要素データを減らし、且つ、各行の半分の位置が要素データを減らす前の半分の位置に一致するようにずらすことで生成される定義である。 As described above, the arithmetic processing apparatus according to the present embodiment performs forward convolution operations and backward convolution operations using a new filter definition in which the number of element data is smaller than that of the conventional filter definition of a square matrix. Do. The following table shows the ratio of the amount of calculation between the conventional filter definition and the new filter definition according to the filter size. Here, the new filter definition is to reduce the element data one by one from the center row to the edge row, and shift the half position of each row so that it matches the half position before reducing the element data. Is the definition generated by.
このように、本実施例に係る演算処理装置は、フォワード畳込演算及びバックワード畳込演算における演算量を削減することができる。ここで、本実施例に係る演算処理装置は、入力データを変換する演算を行うが、入力データを変換する演算数は、畳込演算において削減される演算数より少ないため、演算量を低減することができる。また、本実施例に係る演算処理装置は、データ量削減によってメモリスループットの削減にも寄与することができる。高速フーリエ変換による高速化手法を用いるための条件を満たさないフィルタを用いる場合でも、本実施例に係る演算処理装置は、フォワード畳込演算及びバックワード畳込演算における演算量を削減することができる。したがって、本実施例に係る演算処理装置は、深層学習の演算において、使用する記憶装置の容量を抑えつつ演算効率を向上させることができる。 As described above, the arithmetic processing unit according to the present embodiment can reduce the amount of arithmetic operations in the forward convolution operation and the backward convolution operation. Here, the arithmetic processing apparatus according to the present embodiment performs an operation for converting the input data, but the number of operations for converting the input data is smaller than the number of operations reduced in the convolution operation, so that the amount of calculation is reduced. be able to. In addition, the arithmetic processing unit according to this embodiment can also contribute to the reduction of memory throughput by reducing the amount of data. Even when a filter that does not satisfy the conditions for using the high-speed method by the fast Fourier transform is used, the arithmetic processing unit according to the present embodiment can reduce the amount of arithmetic operations in the forward convolution operation and the backward convolution operation. .. Therefore, the arithmetic processing unit according to the present embodiment can improve the arithmetic efficiency while suppressing the capacity of the storage device used in the arithmetic of deep learning.
特に、3×3のサイズのフィルタは、深層学習では多用されるフィルタであり、その3×3のサイズのフィルタにおいても実施例で説明したように演算数が削減される。 In particular, a filter having a size of 3 × 3 is a filter often used in deep learning, and a filter having a size of 3 × 3 also reduces the number of operations as described in the embodiment.
また、本実施例に係る演算処理装置では、重みデータを小さくすることができ、フォワード畳込演算及びバックワード畳込演算におけるデータ量を少なく抑えることができる。 Further, in the arithmetic processing unit according to the present embodiment, the weight data can be reduced, and the amount of data in the forward convolution operation and the backward convolution operation can be suppressed to be small.
次に、実施例2について説明する。本実施例に係る演算処理装置は、新フィルタ定義に合わせてボトムデータを変換した場合に、そのボトムデータを用いて算出されたデータをそのまま使用してプーリング処理を行う。本実例に係る演算処理装置も、図1及び2で表される。以下では、実施例1と同様の各部の機能については説明を省略する。 Next, Example 2 will be described. When the bottom data is converted according to the new filter definition, the arithmetic processing unit according to the present embodiment performs the pooling process by using the data calculated using the bottom data as it is. The arithmetic processing unit according to this example is also shown in FIGS. 1 and 2. In the following, description of the functions of the same parts as in the first embodiment will be omitted.
図16は、実施例2に係るプーリング処理部によるストライド数が2の場合のプーリング処理を説明するための図である。 FIG. 16 is a diagram for explaining a pooling process when the number of strides by the pooling process unit according to the second embodiment is 2.
プーリング処理部103は、畳込演算部101が出力したトップデータ209に対して活性化処理部102により正規化されたデータの入力を受ける。ここでは、8×8のボトムデータ201及び新フィルタ定義301を用いてフォワード畳込演算が行われた場合で説明する。すなわち、プーリング処理部103は、図16に示すデータ401の入力を受ける。ここでは、データ401は、要素データi00〜i63を有する。要素データi00〜i63は、それぞれトップデータ209の要素データt00〜t63に対応する。
The pooling
プーリング処理部103は、図16のデータ401上に示した太線枠411をプーリングサイズとして記憶する。そして、プーリング処理部103は、最初に、太線枠411の上の行がデータ401の1行目の最も若番の要素データに一致するように配置する。そして、太線枠411に含まれる要素データi00,i01,i08及びi09を取得し、取得した要素データの平均や最大値の選択などのプーリング処理を行い値を取得する。そして、プーリング処理部103は、取得した値を出力するデータ402の要素データp00とする。
The pooling
次に、プーリング処理部103は、太線枠411を要素データ2つ分だけ行方向に進めながら、プーリング処理を行い値を取得していく。そして、太線枠411がデータ410の行の最後尾に達すると、プーリング処理部103は、要素データ2つ分だけ列方向に太線枠411を移動し、且つ、行の先頭に太線枠411を戻す。その後、プーリング処理部103は、太線枠411を要素データ2つ分だけ行方向に進めながら、同様のプーリング処理を繰返して値を取得する処理を、太線枠411の下の行がデータ401の一番下の行の最後尾に達するまで繰返す。そして、プーリング処理部103は、取得した値をそれぞれ出力するデータ402の要素データp01〜p15としていく。
Next, the pooling
例えば、太線枠411が図16で示すデータ401上の位置に配置された場合、プーリング処理部103は、要素データi18,i19,i26及びi27を取得する。そして、プーリング処理部103は、要素データi18,i19,i26及びi27を用いてプーリング処理を行い値を取得する。その後、プーリング処理部103は、取得した値をデータ402の要素データp05とする。
For example, when the
プーリング処理部103は、要素データp00〜p15を取得してデータ402を完成させる。その後、プーリング処理部103は、データ402を次の演算処理層10へ出力する。
The pooling
図17は、実施例2に係るプーリング処理部によるストライド数が1の場合のプーリング処理を説明するための図である。ストライド数が1の場合、プーリングの対象が1行ずつ下がるため、データ401のような配置形状の場合、2つの異なるプーリングサイズを用いる。
FIG. 17 is a diagram for explaining a pooling process when the number of strides by the pooling process unit according to the second embodiment is 1. When the number of strides is 1, the target of pooling is lowered line by line. Therefore, in the case of an arrangement shape such as
プーリング処理部103は、図17のデータ401上に示した太線枠412及び413をプーリングサイズとして記憶する。そして、プーリング処理部103は、データ402の奇数行の要素データを算出する場合、太線枠413のプーリングサイズを用いる。また、データ402の奇数行の要素データを算出する場合、太線枠412のプーリングサイズを用いる。
The pooling
具体定には、プーリング処理部103は、最初に、太線枠413の上の行がデータ401の1行目の最も若番の要素データに一致するように配置する。そして、太線枠413に含まれる要素データi00,i01,i08及びi09を取得し、取得した要素データの平均や最大値の選択などによるプーリング処理を行い値を取得する。そして、プーリング処理部103は、取得した値を出力するデータ402の要素データp00とする。その後、プーリング処理部103は、太線枠413がデータ401の行の最後尾に達するまで、太線枠413を要素データ分ずつ行方向に進めながら、プーリング処理による値の取得を行う。そして、プーリング処理部103は、取得した値をそれぞれ出力するデータ402の要素データp01〜p06とする。
Specifically, the pooling
次に、プーリング処理部103は、太線枠412の上の行がデータ401の2行目の最も若番の要素データに一致するように配置する。そして、太線枠411に含まれる要素データi08,i09,i16及びi17を取得し、取得した要素データの平均や最大値の選択などによるプーリング処理を行い値を取得する。そして、プーリング処理部103は、取得した値を出力するデータ402の要素データp07とする。その後、プーリング処理部103は、太線枠412がデータ401の行の最後尾に達するまで、太線枠412を要素データ分ずつ行方向に進めながら、プーリング処理による値の取得を行う。そして、プーリング処理部103は、取得した値をそれぞれ出力するデータ402の要素データp08〜p13とする。
Next, the pooling
プーリング処理部103は、1行ずつ対象とする行を下げつつ、プーリングサイズを交互に用いてプーリング処理による値の取得を繰返す。そして、プーリング処理部103は、取得した値をそれぞれ出力するデータ402の要素データp14〜p48としていく。
The pooling
例えば、太線枠412が図17で示すデータ401上の位置に配置された場合、プーリング処理部103は、要素データi09,i10,i17及びi18を取得する。そして、プーリング処理部103は、要素データi09,i10,i17及びi18を用いてプーリング処理を行い値を取得する。その後、プーリング処理部103は、取得した値をデータ402の要素データp08とする。
For example, when the
また、太線枠413が図17で示すデータ401上の位置に配置された場合、プーリング処理部103は、要素データi32,i33,i40及びi41を取得する。そして、プーリング処理部103は、要素データi32,i33,i40及びi41を用いてプーリング処理を行い値を取得する。その後、プーリング処理部103は、取得した値をデータ402の要素データp28とする。
Further, when the
プーリング処理部103は、要素データp00〜p48を取得してデータ402を完成させる。その後、プーリング処理部103は、データ402を次の演算処理層10へ出力する。
The pooling
以上に説明したように、本実施例に係る演算処理装置は、フォワード畳込演算の演算結果であるトップデータをそのまま用いてプーリング処理を行うことができる。したがって、新フィルタ定義に合わせてボトムデータを変換してフォワード畳込演算を行った場合でも、処理を増やさずにプーリング処理を行うことができ、ネットワーク全体として演算処理の効率を向上させることができる。 As described above, the arithmetic processing unit according to the present embodiment can perform the pooling processing by using the top data which is the arithmetic result of the forward convolution operation as it is. Therefore, even when the bottom data is converted according to the new filter definition and the forward convolution operation is performed, the pooling process can be performed without increasing the process, and the efficiency of the operation process can be improved for the entire network. ..
次に、実施例3について説明する。本実施例に係る演算処理装置は、新フィルタ定義に合わせてボトムデータを変換した場合に、入力されるデータと出力するデータとを同じ大きさにするパディングを行う。本実例に係る演算処理装置も、図1〜4で表される。以下では、実施例1と同様の各部の機能については説明を省略する。 Next, Example 3 will be described. The arithmetic processing unit according to this embodiment performs padding to make the input data and the output data the same size when the bottom data is converted according to the new filter definition. The arithmetic processing unit according to this example is also represented by FIGS. 1 to 4. In the following, description of the functions of the same parts as in the first embodiment will be omitted.
図18は、実施例3に係る畳込演算部によるフォワード畳込演算を説明するための図である。ここでは、8×8のボトムデータ201及び新フィルタ定義301を使用した重みデータ221を用いてフォワード畳込演算を行う場合で説明する。
FIG. 18 is a diagram for explaining a forward convolution operation by the convolution operation unit according to the third embodiment. Here, a case where the forward convolution operation is performed using the 8 × 8
入力データ処理部111は、ボトムデータ201の入力を受ける。そして、入力データ処理部111は、ボトムデータ201を新フィルタ定義221に合わせて変換しボトムデータ210とする。
The input data processing unit 111 receives the input of the
そして、入力データ処理部111は、ボトムデータ210の周りに図18に示すように値が0である要素データ213を付加し、ボトムデータ214を生成する。このボトムデータ210の周りに値が0である要素データ213を付加する処理が0パディングである。これにより、入力データ処理部111は、トップ差分データ203のサイズをボトムデータ210のサイズと一致させる。そして、入力データ処理部111は、ボトムデータ214を乗算部112へ出力する。
Then, the input data processing unit 111 adds
乗算部112は、ボトムデータ214の入力を入力データ処理部111から受ける。そして、乗算部112は、ボトムデータ214に対して、重みデータ221を用いてフォワード畳込演算を実行する。これにより、乗算部112は、ボトムデータ210の要素データb00〜nb63と同数のトップデータ209の要素データt00〜t63を算出する。
The
ここで、8×8の行列のボトムデータ201の場合、0パディングを行うには36個の要素データ213を用いる。これに対して、ボトムデータ210の場合、0パディングを行うには34個の要素データ213を用いる。すなわち、ボトムデータ210を用いた方が、変換前のボトムデータ201に比べて、0パディングに用いる要素データ213が少なくて済む。
Here, in the case of the
以上に説明したように、本実施例に係る演算処理装置は、新フィルタ定義に合わせた変換後のボトムデータに対して0パディングを行いフォワード畳込演算を行う。この場合、変換前のボトムデータに対して0パディングを行うよりも少ない数の要素データの付加で済み、データ容量を小さくできるとともに演算効率を向上させることができる。 As described above, the arithmetic processing unit according to the present embodiment performs 0 padding on the converted bottom data according to the new filter definition and performs the forward convolution operation. In this case, it is sufficient to add a smaller number of element data than performing 0 padding on the bottom data before conversion, and the data capacity can be reduced and the calculation efficiency can be improved.
次に、実施例4について説明する。本実施例に係る演算処理装置は、3次元データに対して新フィルタ定義を用いてフォワード畳込演算及びバックワード畳込演算を行う。本実例に係る演算処理装置も、図1〜4で表される。本実施例に係る各部は、同様の符号を有する実施例1の各部と同様の処理を3次元データに対して実行する機能を有する。 Next, Example 4 will be described. The arithmetic processing unit according to this embodiment performs a forward convolution operation and a backward convolution operation on three-dimensional data using a new filter definition. The arithmetic processing unit according to this example is also represented by FIGS. 1 to 4. Each part according to the present embodiment has a function of executing the same processing as each part of the first embodiment having the same reference numerals to the three-dimensional data.
図19は、実施例4に係る畳込演算部による新フィルタ定義を用いたフォワード畳込演算の一例を説明するための図である。重みデータ記憶部115は、3次元の新フィルタ定義を使用した重みデータ222を記憶する。ここで、重みデータ222に対応する従来のフィルタ定義は、3×3×3に要素データが並んだ立方体である。重みデータ222は、x〜z方向の正面図が実施例1の新フィルタ定義301と同様のデータの配置形状を有する。
FIG. 19 is a diagram for explaining an example of a forward convolution operation using a new filter definition by the convolution operation unit according to the fourth embodiment. The weight
入力データ処理部111は、8×8×8の立方体であるボトムデータ201の入力を受ける。そして、入力データ処理部111は、ボトムデータ201の図19の座標に対応するy軸方向及びz軸方向に並ぶ隣合う要素データを平均化する。これにより、入力データ処理部111は、ボトムデータ201のy軸方向及びz軸方向に隔行ずつ要素データの半分だけずらした見た目を有するボトムデータ210を生成する。そして、入力データ処理部111は、生成したボトムデータ210を乗算部112へ出力する。
The input data processing unit 111 receives the input of the
乗算部112は、ボトムデータ210の入力を受ける。そして、乗算部112は、新フィルタ定義を使用した重みデータ222をボトムデータ210に対して用いて、フォワード畳込演算を行う。
The
また、畳込演算部106は、ボトムデータ210と重みデータ222とを用いたフォワード畳込演算で算出されたトップデータ209の配置形状と同様の配置形状を有するトップ差分データ203の入力を受ける。そして、畳込演算部106は、ボトムデータ210、重みデータ222及び取得したトップ差分データ203を用いてバックワード畳込演算を実行する。
Further, the
次に、図20を参照して、実施例4に係る畳込演算部106による新フィルタ定義を用いたフォワード畳込演算の他の例を説明する。図20は、実施例4に係る畳込演算部による新フィルタ定義を用いたフォワード畳込演算の他の例を説明するための図である。重みデータ記憶部115は、3次元の新フィルタ定義を使用した重みデータ223を記憶する。この、重みデータ223も、3×3×3に要素データが並んだ立方体に対応する新フィルタ定義である。重みデータ223も、x〜z方向の正面図が実施例1の新フィルタ定義301と同様のデータの配置形状を有する。
Next, with reference to FIG. 20, another example of the forward convolution operation using the new filter definition by the
入力データ処理部111は、図19の場合と同様にボトムデータ210を生成する。乗算部112は、新フィルタ定義を使用した重みデータ223をボトムデータ210に対して用いて、フォワード畳込演算を行う。また、畳込演算部106は、ボトムデータ210と重みデータ223とを用いたフォワード畳込演算で算出されたトップデータ209と同様のデータの配置形状を有するトップ差分データ203を用いてバックワード畳込演算を行う。
The input data processing unit 111 generates the
以上に説明したように、本実施例に係る演算処理装置は、3次元データに対しても従来よりも要素データの少ない新フィルタ定義を使用してフォワード畳込演算及びバックワード畳込演算を行う。したがって、本実施例に係る演算処理装置は、3次元データを用いた深層学習の演算において、使用する記憶装置の容量を抑えつつ演算効率を向上させることができる。 As described above, the arithmetic processing unit according to the present embodiment performs forward convolution operation and backward convolution operation for three-dimensional data by using a new filter definition having less element data than before. .. Therefore, the arithmetic processing unit according to the present embodiment can improve the arithmetic efficiency while suppressing the capacity of the storage apparatus used in the deep learning arithmetic using the three-dimensional data.
(プログラムの記述例)
図21は、フォワード畳込演算のプログラムの記述例を説明するための図である。フォワード畳込演算は、図21に示すようにボトムデータ201(bottom_y)とトップデータ209(top_x)とを用いた演算は掛け算と足し算で表現できる。フォワード畳込演算は、ボトムデータ201のデータ数Ci、トップ差分データ203のデータ数Co、バッチ数mb、ストライド数W及びトップサイズを調節するためのパラメータとなるパッド数padを指定して行なわれる。ここで、トップサイズの調整とは、トップサイズの水増しにあたる。
(Program description example)
FIG. 21 is a diagram for explaining a description example of a program for forward convolution operation. As shown in FIG. 21, the forward convolution operation can be expressed by multiplication and addition in the operation using the bottom data 201 (bottom_y) and the top data 209 (top_x). The forward convolution operation is performed by designating the number of data Ci of the
図22は、バックワード畳込重み差分演算のプログラムの記述例を説明するための図である。バックワード畳込重み差分演算は、図22に示すようにボトムデータ201(bottom_y)とトップ差分データ203(top_x)とを用いた演算は掛け算と足し算で表現できる。この場合、重み差分データ(ew)が算出される。バックワード畳込重み差分演算は、ボトムデータ201のデータ数Ci、トップ差分データ203のデータ数Co、バッチ数mb、ストライド数W及びトップサイズを調節するためのパラメータとなるパッド数padを指定して行なわれる。ここで、トップサイズの調整とは、トップサイズの水増しにあたる。
FIG. 22 is a diagram for explaining a description example of a program for backward convolution weight difference calculation. As shown in FIG. 22, the backward convolution weight difference calculation can be expressed by multiplication and addition in the calculation using the bottom data 201 (bottom_y) and the top difference data 203 (top_x). In this case, the weight difference data (ew) is calculated. In the backward convolution weight difference calculation, the number of data Ci of the
図23は、バックワード畳込ボトム差分演算のプログラムの記述例を説明するための図である。バックワード畳込ボトム差分演算は、図23に示すようにボトムデータ201(bottom_y)とトップ差分データ203(top_x)と用いた演算は掛け算と足し算で表現できる。この場合、ボトム差分データ205(bottom_ey)が算出される。バックワード畳込ボトム差分演算は、ボトムデータ201のデータ数Ci、トップ差分データ203のデータ数Co、バッチ数mb、ストライド数W及びトップサイズを調節するためのパラメータとなるパッド数padを指定して行なわれる。ここで、トップサイズの調整とは、トップサイズの水増しにあたる。
FIG. 23 is a diagram for explaining a description example of a program for backward convolution bottom difference calculation. As shown in FIG. 23, the backward convolution bottom difference operation can be expressed by multiplication and addition of the operation using the bottom data 201 (bottom_y) and the top difference data 203 (top_x). In this case, the bottom difference data 205 (bottom_ey) is calculated. In the backward convolution bottom difference calculation, the number of data Ci of the
(ハードウェア構成)
図25は、演算処理装置のハードウェア構成図である。演算処理装置1は、CPU(Central Processing Unit)91、メモリ92、アクセラレータ93及びメモリ94を有する。メモリ92は、CPU91専用のメモリであり、CPU91に含まれてもよい。また、メモリ94は、アクセラレータ93のメモリであり、アクセラレータ93に含まれてもよい。
(Hardware configuration)
FIG. 25 is a hardware configuration diagram of the arithmetic processing unit. The
メモリ92は、OS(Operating System)及び各演算処理層10で使用される学習プログラムを含む各種プログラムを記憶する。また、メモリ92は、入力データ2及び期待値207を記憶する。
The
CPU91は、メモリ92に格納されたOSを実行する。さらに、CPU91は、メモリ92が有する学習プログラムを含む各種プログラム、並びに、入力データ2、重みデータ202及び期待値207を含む各種データをアクセラレータ93へ出力する。重みデータ202には、使用する新フィルタ定義に応じて重みデータ221などを含む。そして、CPU91は、深層学習の処理実行をアクセラレータ93に指示する。その後、CPU91は、学習後の重みデータ202をアクセラレータ93から取得し、メモリ92に格納された重みデータ202を更新する。
The
アクセラレータ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の処理に使用するデータをまとめて取得してもよい。
The
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 トップデータ
1
Claims (6)
前記第2データの配置形状を基に前記第1データを変換する変換部と、
前記変換部により変換された前記第1データに対して前記第2データをフィルタとして用いて畳み込み演算を行う畳込演算部と
を備えたことを特徴とする演算処理装置。 A storage unit that stores the first data having the element data forming the matrix and the second data having the arrangement shape obtained by excluding a predetermined number of element data from the element data forming the matrix.
A conversion unit that converts the first data based on the arrangement shape of the second data, and
A calculation processing unit including a convolution calculation unit that performs a convolution calculation using the second data as a filter for the first data converted by the conversion unit.
前記第2データは、行方向及び列方向に同数の要素データが配置された状態から真ん中の行から1つ離れるにしたがい行の含まれる要素データを1つずつ除き、且つ、要素データを除いた行の半分の位置と要素データを除く前の行の半分の位置とが一致するように要素データが配置された配置形状を有し、
前記変換部は、前記第1データの隔行の隣り合う要素データを平均化する変換を行う
ことを特徴とする請求項1又は2に記載の演算処理装置。 The first data has the same number of element data in the row direction and the column direction.
In the second data, the element data including the row was removed one by one according to the distance from the middle row from the state where the same number of element data was arranged in the row direction and the column direction, and the element data was excluded. It has an arrangement shape in which the element data is arranged so that the position of half of the row and the position of half of the previous row excluding the element data match.
The arithmetic processing unit according to claim 1 or 2, wherein the conversion unit performs conversion for averaging adjacent element data in intervals of the first data.
前記第2データの配置形状を基に前記第1データを変換させ、
変換された前記第1データに対して前記第2データをフィルタとして用いて畳込演算を行わせる
ことを特徴とする演算処理装置の制御方法。 A control method for an arithmetic processing unit that stores first data having element data forming a matrix and second data having an arrangement shape obtained by removing a predetermined number of element data from the element data forming a matrix.
The first data is converted based on the arrangement shape of the second data.
A control method of an arithmetic processing unit, characterized in that a convolution operation is performed on the converted first data by using the second data as a filter.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017017668A JP6794854B2 (en) | 2017-02-02 | 2017-02-02 | Arithmetic processing unit and control method of arithmetic processing unit |
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 (en) | 2017-02-02 | 2017-02-02 | Arithmetic processing unit and control method of arithmetic processing unit |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018124867A JP2018124867A (en) | 2018-08-09 |
JP6794854B2 true JP6794854B2 (en) | 2020-12-02 |
Family
ID=62979883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017017668A Active JP6794854B2 (en) | 2017-02-02 | 2017-02-02 | Arithmetic processing unit and control method of arithmetic processing unit |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180217962A1 (en) |
JP (1) | JP6794854B2 (en) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11568223B2 (en) * | 2017-04-14 | 2023-01-31 | Semiconductor Energy Laboratory Co., Ltd. | Neural network circuit |
US20190392287A1 (en) | 2018-06-22 | 2019-12-26 | Samsung Electronics Co., Ltd. | Neural processor |
CN110096310B (en) * | 2018-11-14 | 2021-09-03 | 上海寒武纪信息科技有限公司 | Operation method, operation device, computer equipment and storage medium |
CN110096309B (en) * | 2018-11-14 | 2020-04-14 | 上海寒武纪信息科技有限公司 | Operation method, operation device, computer equipment and storage medium |
JP7026032B2 (en) * | 2018-10-19 | 2022-02-25 | Kddi株式会社 | Recommendation system and recommendation method |
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 (en) * | 2019-06-25 | 2022-05-06 | 中电海康集团有限公司 | Memory device |
JP2021022235A (en) * | 2019-07-29 | 2021-02-18 | 公益財団法人鉄道総合技術研究所 | Blinking detection device and blinking detection method |
WO2021168644A1 (en) * | 2020-02-25 | 2021-09-02 | 深圳市大疆创新科技有限公司 | Data processing apparatus, electronic device, and data processing method |
JP2022165250A (en) * | 2021-04-19 | 2022-10-31 | 富士通株式会社 | Program, data processing method, and data processing apparatus |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5900321B2 (en) * | 2012-02-08 | 2016-04-06 | 株式会社Jvcケンウッド | Image processing apparatus, image processing method, and image processing program |
JP6700712B2 (en) * | 2015-10-21 | 2020-05-27 | キヤノン株式会社 | Convolution operation device |
-
2017
- 2017-02-02 JP JP2017017668A patent/JP6794854B2/en active Active
-
2018
- 2018-01-23 US US15/877,444 patent/US20180217962A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20180217962A1 (en) | 2018-08-02 |
JP2018124867A (en) | 2018-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6794854B2 (en) | Arithmetic processing unit and control method of arithmetic processing unit | |
US10642613B2 (en) | Arithmetic processing device for deep learning and control method of the arithmetic processing device for deep learning | |
US11301546B2 (en) | Spatial locality transform of matrices | |
KR102347119B1 (en) | Accessing data in multi-dimensional tensors using adders | |
CN110520834B (en) | Alternative cycle limiting | |
JP6972547B2 (en) | Arithmetic processing unit and control method of arithmetic processing unit | |
US20190095776A1 (en) | Efficient data distribution for parallel processing | |
TWI678617B (en) | "system, computer-implemented method, and apparatus for accessing data in multi-dimensional tensors using adders" | |
JP6958027B2 (en) | Arithmetic processing unit and control method of arithmetic processing unit | |
WO2019119301A1 (en) | Method and device for determining feature image in convolutional neural network model | |
US20170206089A1 (en) | Information processing apparatus and computational method | |
US11580369B2 (en) | Inference apparatus, convolution operation execution method, and program | |
WO2019085709A1 (en) | Pooling method and system applied to convolutional neural network | |
US11164032B2 (en) | Method of performing data processing operation | |
JP2019095862A (en) | Arithmetic processing device | |
JP2018197906A (en) | Information processing apparatus, multithreaded matrix calculation method, and multithreaded matrix calculation program | |
CN114792124A (en) | Implementing dilated convolutions in hardware | |
JP7419574B2 (en) | Dilated convolution acceleration calculation method and device | |
US20170278214A1 (en) | Image processing apparatus, image processing method, and vehicle control apparatus | |
JP2017027314A (en) | Parallel arithmetic device, image processor and parallel arithmetic method | |
CN109726798B (en) | Data processing method and device | |
JP6906622B2 (en) | Arithmetic circuit and arithmetic method | |
US20210312279A1 (en) | Information processing apparatus and information processing method | |
JP2007133710A (en) | Preprocessing method and matrix reordering method in simultaneous linear equation iterative solution | |
JP2020080048A (en) | Parallel processing apparatus and program |
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 |