KR102368075B1 - 고효율 풀링 방법 및 이를 위한 장치 - Google Patents

고효율 풀링 방법 및 이를 위한 장치 Download PDF

Info

Publication number
KR102368075B1
KR102368075B1 KR1020210072676A KR20210072676A KR102368075B1 KR 102368075 B1 KR102368075 B1 KR 102368075B1 KR 1020210072676 A KR1020210072676 A KR 1020210072676A KR 20210072676 A KR20210072676 A KR 20210072676A KR 102368075 B1 KR102368075 B1 KR 102368075B1
Authority
KR
South Korea
Prior art keywords
pooling
data
window
row
column
Prior art date
Application number
KR1020210072676A
Other languages
English (en)
Inventor
정태영
Original Assignee
오픈엣지테크놀로지 주식회사
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 오픈엣지테크놀로지 주식회사 filed Critical 오픈엣지테크놀로지 주식회사
Priority to KR1020210072676A priority Critical patent/KR102368075B1/ko
Priority to EP21944314.0A priority patent/EP4350581A1/en
Priority to PCT/KR2021/014771 priority patent/WO2022255561A1/ko
Priority to CN202180100809.XA priority patent/CN117730328A/zh
Application granted granted Critical
Publication of KR102368075B1 publication Critical patent/KR102368075B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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

Landscapes

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

Abstract

행렬로 표현 가능한 입력 데이터를 행방향과 열방향의 크기가 각각 Rp 및 Cp인 크기의 풀링 윈도우로 풀링하는 풀링 방법으로서, Cp 크기의 제1풀링 윈도우를 이용하여, 상기 입력 데이터를 풀링하여 임시 데이터를 생성하는 단계 및 Rp 크기의 제2풀링 윈도우(30)를 이용하여, 상기 임시 데이터를 풀링하여 풀링 데이터를 생성하는 단계를 포함하는 풀링 방법을 공개한다.

Description

고효율 풀링 방법 및 이를 위한 장치{High efficient pooling method and a device for the same}
본 발명은 컴퓨팅 장치에서 풀링을 수행하는 방법 및 이 방법이 적용된 하드웨어 가속기에 관한 것이다.
CNN은 풀링 연산을 포함하는 복수 개의 연산단계를 수행한다. 미국등록특허 US10713816에는 심층 CNN 풀링 레이어를 특징으로서 이용하는 물체검출 방법이 제시되어 있다.
도 1은 일 실시예에 따른 CNN의 연산구조를 나타낸 것이다. 이하 도 1을 참조하여 설명한다.
우선, 내부메모리에 저장된 입력 이미지 데이터(51)에 복수 개의 커널들을 이용한 콘볼루션 연산을 수행하여 콘볼루션 레이어들(52)을 생성할 수 있다. 콘볼루션 레이어들(52)을 생성하는 단계는 상기 콘볼루션 연산을 수행한 결과 얻은 복수 개의 피쳐 맵들에 대하여 비선형 연산(ex: ReLU, Sigmoid, 또는, tanH)을 수행하는 단계를 포함할 수 있다.
그 다음 콘볼루션 레이어들(52)에 대한 풀링을 수행하여 풀링 레이어들(53)을 생성할 수 있다. 각각의 콘볼루션 레이어(52)는 M*N 행렬 형태로 표현될 수 있는 데이터를 포함할 수 있다. 이때, 풀링을 수행하기 위하여 상기 콘볼루션 레이어(52)보다 작은 디멘젼을 갖는 윈도우인 풀링 윈도우가 정의될 수 있다. 풀링 윈도우는 행 및 열 방향에 대하여 각각 Mp 및 Np의 크기를 가질 수 있다. 풀링 윈도우의 크기는 콘볼루션 레이어의 크기보다 작을 수 있다(M>=Mp 이고 N>Np, 또는 M>Mp 이고 N>=Np). 상기 풀링은 상기 콘볼루션 레이어에 상기 풀링 윈도우를 겹쳐 선택하는 Mp*Np 개의 데이터들로부터 이 보다 더 작은 개수의 데이터, 예컨대 1개의 데이터를 생성하는 연산이다. 예컨대 MAX 풀링은 상기 Mp*Np 개의 데이터들 중에서 가장 큰 값 1개를 선택하여 출력하는 연산이다. 예컨대 average 풀링은 상기 Mp*Np 개의 데이터들의 평균값을 출력하는 연산이다. 그 밖에 다른 규칙을 따르는 풀링이 정의될 수 있다. 상기 콘볼루션 레이어에 상기 풀링 윈도우를 겹칠 수 있는 경우의 수는 다양하다. 실시예에 따라 상기 콘볼루션 레이어 상에서 상기 풀링 윈도우를 이동시키는 규칙을 제한할 수 있다. 예컨대, 상기 풀링 윈도우를 상기 콘볼루션 레이어의 행 방향을 따라 SM 칸 씩 건너뛰어서 이동하도록 제한 경우 상기 풀링 연산의 행 방향 Stride는 SM인 것으로 지칭하고, 상기 풀링 윈도우를 상기 콘볼루션 레이어의 열 방향을 따라 SN 칸 씩 건너뛰어서 이동하도록 제한 경우 상기 풀링 연산의 열 방향 Stride는 SN인 것으로 지칭할 수 있다(SM 및 SN 는 자연수). Stride 의 크기가 커질수록, 풀링 연산의 결과로서 출력되는 풀링 레이어의 크기는 더 작아질 수 있다. 상술한 설명 외에도, 풀링 연산에 대한 구체적인 개념은 CNN을 설명하는 선행기술에 잘 제시되어 있다.
그 다음, 상기 풀링 레이어들(53)에 대한 플래트닝(flattening)을 수행하여 신경망(54)에 입력할 어레이를 생성할 수 있다.
그 다음, 상기 어레이를 상기 신경망(54)에 입력하여 상기 신경망(54)으로부터 출력을 생성할 수 있다.
도 1에서는 CNN의 일 실시예를 나타내었지만, CNN을 구현하는 다양한 다른 예가 존재한다. 또한, 도 1에서 풀링 연산이 CNN의 구현을 위해 이용되었지만, 풀링 연산은 CNN이 아닌 다른 컴퓨팅 기술분야에서도 사용될 수 있다.
풀링 연산의 연산량은 풀링 윈도우의 크기가 커지면 커지는 경향이 있고, Stride의 크기가 작을수록 키지는 경향이 있다. 또한 Stride의 크기가 작을수록 풀링 연산을 수행하는 과정에서 동일한 연산이 반복되는 경향이 높아진다.
본 발명에서는 풀링 연산을 위한 연산량을 감소시키는 풀링 방법을 제공하고자 한다.
본 발명의 일 관점에 따라, 행렬로 표현 가능한 입력 데이터(100)를 행방향과 열방향의 크기가 각각 Rp 및 Cp인 크기의 풀링 윈도우(10)로 풀링하는 풀링 방법이 제공될 수 있다. 상기 풀링 방법은, 컴퓨팅 장치가, Cp 크기의 제1풀링 윈도우(20)를 이용하여, 상기 입력 데이터(100)를 풀링하여 임시 데이터(110)를 생성하는 단계; 및 상기 컴퓨팅 장치가, Rp 크기의 제2풀링 윈도우(30)를 이용하여, 상기 임시 데이터(110)를 풀링하여 풀링 데이터(200)를 생성하는 단계;를 포함한다.
이때, 상기 제1풀링 윈도우(20)는 행방향과 열방향의 크기가 각각 1 및 Cp인 윈도우이며, 상기 제2풀링 윈도우(30, 31)는 행방향과 열방향의 크기가 각각 Rp 및 1인 윈도우일 수 있다.
이때, 상기 풀링 데이터(200)를 생성하는 단계는, 상기 컴퓨팅 장치가, 상기 임시 데이터(110)를 트랜스포즈하여 트랜스포즈 데이터(120)를 생성하는 단계; 상기 컴퓨팅 장치가, 상기 제2풀링 윈도우(30, 32)를 이용하여, 상기 트랜스포즈 데이터(120)를 풀링하여 제2임시 데이터(130)를 생성하는 단계; 및 상기 컴퓨팅 장치가, 상기 제2임시 데이터(130)를 트랜스포즈하여 상기 풀링 데이터(200)를 생성하는 단계;를 포함할 수 있다.
이때, 상기 제1풀링 윈도우(20)는 행방향과 열방향의 크기가 각각 1 및 Cp인 윈도우이며, 상기 제2풀링 윈도우(30, 32)는 행방향과 열방향의 크기가 각각 1 및 Rp인 윈도우일 수 있다.
또는, 상기 입력 데이터(100)는 행 방향과 열 방향으로 각각 R 및 C의 크기를 갖고, 상기 임시 데이터(110)는 행 방향과 열 방향으로 각각 C-Cp+1 및 R의 크기를 가지며, 상기 풀링 데이터(200)는 행 방향과 열 방향으로 각각 R-Rp+1 및 C-Cp+1의 크기를 가지며, 상기 입력 데이터(100)의 엘리먼트 쌍 {(i, j), (i, j+1), ... (i, j+CP-1)}과 상기 제1풀링 윈도우(20)를 오버랩하여 풀링한 데이터는 상기 임시 데이터(110)의 엘리먼트 (j, i)에 저장되며(i는 행 인덱스, j는 열 인덱스), 상기 임시 데이터(110)의 엘리먼트 쌍 {(i, j), (i, j+1), ..., (i, j+Rp-1)}와 상기 제2풀링 윈도우(30, 32)를 오버랩하여 풀링한 데이터는 풀링 데이터(200)의 엘리먼트 (j, i)에 저장될 수 있다(i는 행 인덱스, j는 열 인덱스).
이때, 상기 제1풀링 윈도우(20)는 행방향과 열방향의 크기가 각각 1 및 Cp인 윈도우이며, 상기 제2풀링 윈도우(30, 32)는 행방향과 열방향의 크기가 각각 1 및 Rp인 윈도우일 수 있다.
이때, 상기 제1풀링 윈도우의 행방향 스트라이드 및 열방향 스트라이드는 각각 1 및 1일 수 있다.
이때, 상기 제2풀링 윈도우의 행방향 스트라이드 및 열방향 스트라이드는 각각 1 및 1일 수 있다.
이때, 상기 소정의 풀링은 MAX 풀링, MIN 풀링, 및 Average 풀링 중 어느 하나일 수 있다. 본 발명은 상기 풀링의 구체적인 입출력 특성에 의해 제한되지 않는다.
이때, 상기 제1풀링 윈도우의 행방향 스트라이드는 Rp/2 이하이고, 상기 제1풀링 윈도우의 열방향 스트라이드는 Cp/2 이하이며, 상기 제2풀링 윈도우의 행방향 스트라이드는 Rp/2 이하이고, 그리고 상기 제3풀링 윈도우의 열방향 스트라이드는 Cp/2 이하일 수 있다.
상기 풀링 방법은, 상기 컴퓨팅 장치가 명령코드를 포함하는 소프트웨어에 의하여 실행할 수 있다. 이때, 상기 입력 데이터, 상기 임시 데이터, 상기 풀링 데이터, 상기 트랜스포즈 데이터, 및 상기 제2임시 데이터는 상기 명령코드에 의해 상기 컴퓨팅 장치의 휘발성 메모리에 정의된 메모리 공간에 기록될 수 있다. 필요하다면 이들 중 일부는 상기 컴퓨팅 장치의 비휘발성 메모리에 저장될 수도 있다.
본 발명의 다른 관점에 따라, 행렬로 표현 가능한 입력 데이터(100)를 행방향과 열방향의 크기가 각각 Rp 및 Cp인 크기의 풀링 윈도우(10)로 풀링하는 풀링 방법을 수행하는 하드웨어 가속기가 제공될 수 있다. 상기 하드웨어 가속기는, 제어부(40); 내무 메모리(30); 및 데이터 연산부(610);를 포함한다. 이때, 상기 제어부는, 상기 데이터 연산부로 하여금, 제1시구간에, Cp 크기의 제1풀링 윈도우(20)를 이용하여, 상기 입력 데이터(100)를 풀링하여 임시 데이터(110)를 생성하는 단계를 수행하도록 되어 있고, 그리고 상기 데이터 연산부로 하여금, 상기 제1시구간 이후의 제2시구간에, Rp 크기의 제2풀링 윈도우(30)를 이용하여, 상기 임시 데이터(110)를 풀링하여 풀링 데이터(200)를 생성하는 단계를 수행하도록 되어 있다.
이때, 상기 입력 데이터(100)는 행 방향과 열 방향으로 각각 R 및 C의 크기를 갖고, 상기 임시 데이터(110)는 행 방향과 열 방향으로 각각 C-Cp+1 및 R의 크기를 가지며, 상기 풀링 데이터(200)는 행 방향과 열 방향으로 각각 R-Rp+1 및 C-Cp+1의 크기를 가지며, 상기 입력 데이터(100)의 엘리먼트 쌍 {(i, j), (i, j+1), ... (i, j+CP-1)}과 상기 제1풀링 윈도우(20)를 오버랩하여 풀링한 데이터는 상기 임시 데이터(110)의 엘리먼트 (j, i)에 저장되며(i는 행 인덱스, j는 열 인덱스), 상기 임시 데이터(110)의 엘리먼트 쌍 {(i, j), (i, j+1), ..., (i, j+Rp-1)}와 상기 제2풀링 윈도우(30, 32)를 오버랩하여 풀링한 데이터는 풀링 데이터(200)의 엘리먼트 (j, i)에 저장될 수 있다(i는 행 인덱스, j는 열 인덱스).
이때, 상기 제1풀링 윈도우(20)는 행방향과 열방향의 크기가 각각 1 및 Cp인 윈도우이며, 상기 제2풀링 윈도우(30, 32)는 행방향과 열방향의 크기가 각각 1 및 Rp인 윈도우일 수 있다.
본 발명의 다른 관점에 따라 제공되는 컴퓨팅 장치는, 상기 하드웨어 가속기; 메모리(11); 및 상기 메모리와 상기 하드웨어 가속기 간의 데이터 교환 통로인 버스(700);를 포함한다.
본 발명에 따르면 연산량이 감소한 풀링 연산 방법을 제공할 수 있다.
도 1은 일 실시예에 따른 CNN의 연산구조를 나타낸 것이다.
도 2는 일 실시예에 따라 제공되는 풀링 방법을 나타낸 것이다.
도 3은 본 발명의 일 실시예에 따라 제공되는 풀링 방법을 나타낸 것이다.
도 4는 본 발명의 다른 실시예에 따라 제공되는 풀링 방법을 나타낸 것이다.
도 5는 본 발명의 또 다른 실시예에 따라 제공되는 풀링 방법을 나타낸 것이다.
도 6은 본 발명의 일 실시예에 따라 제공되는 풀링 방법이 적용될 수 있는 하드웨어의 구성예를 나타낸 것이다.
도 7은 도 3 또는 도 5에 제시한 풀링 방법을 도 6에 제시한 하드웨어로 구현하는 방법을 나타낸 것이다.
도 8은 도 5에 제시한 풀링 방법을 파이프라인 연산구조를 갖는 데이터 연산부를 이용하여 구현하는 예를 나타낸 것이다.
도 9는 도 4에 제시한 풀링 방법을 도 6에 제시한 하드웨어로 구현하는 방법을 나타낸 것이다.
이하, 본 발명의 실시예를 첨부한 도면을 참고하여 설명한다. 그러나 본 발명은 본 명세서에서 설명하는 실시예에 한정되지 않으며 여러 가지 다른 형태로 구현될 수 있다. 본 명세서에서 사용되는 용어는 실시예의 이해를 돕기 위한 것이며, 본 발명의 범위를 한정하고자 의도된 것이 아니다. 또한, 이하에서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
도 2a 내지 도 2c는 일 실시예에 따라 제공되는 풀링 방법을 나타낸 것이다. 이하 도 2a 내지 도 2c를 통칭하여 도 2라고 지칭할 수 있다.
도 2a는 행 방향과 열 방향으로 각각 Rp 및 Cp의 크기를 갖는 풀링 윈도우(10)를 나타낸 것이다. 이하, 도 2에서 굵은 선으로 그려진 박스는 풀링 윈도우(10)를 나타낸다.
도 2b는 도 2a의 풀링 윈도우(10)에 의해 풀링될 입력 데이터(100)에 풀링 윈도우(10)가 겹쳐진 모습을 나타낸 것이다. 입력 데이터(100)는 행 방향과 열 방향으로 각각 R 및 C의 크기를 갖는다.
도 2b에 나타낸 예에서 풀링 윈도우(10)가 입력 데이터(100)에 대하여 행 방향으로 1칸씩 이동하고(행 방향 Stride=1), 열 방향으로 1칸씩 이동하는(열 방향 Stride=1) 예를 나타낸 것이다.
도 2c는 입력 데이터(100)를 풀링 윈도우(10)로 풀링하여 얻은 풀링 데이터(200)를 나타낸 것이다. 풀링 데이터(200)는 행 방향과 열 방향으로 각각 R-Rp+1 및 C-Cp+1의 크기를 갖는다.
도 2b는 풀링 윈도우(10)가 입력 데이터(100)의 엘리먼트들{(1,1), (1,2), (1,3), (2,1), (2,2), (2,3)}를 덮고 있는 상태를 나타낸 것이다. 이때, 만일 상기 풀링이 MAX 풀링이라면, 풀링 데이터(200)의 엘리먼트(1,1)는 입력 데이터(100)의 엘리먼트들{(1,1), (1,2), (1,3), (2,1), (2,2), (2,3)} 중 가장 큰 값과 동일할 수 있다. 즉, 풀링 데이터(200)의 엘리먼트(x,y)는 입력 데이터(100)의 엘리먼트들{(x,y), (x,y+1), (x,y+2), (x+1,y), (x+1,y+1), (x+1,y+2)} 중 가장 큰 값과 동일할 수 있다.
도 3a 내지 도 3f는 본 발명의 일 실시예에 따라 제공되는 풀링 방법을 나타낸 것이다. 이하 도 3a 내지 도 3f를 통칭하여 도 3이라고 지칭할 수 있다.
도 3에 의한 풀링 방법은 도 2에 의한 풀링 방법과 동일한 결과를 제공하기 위한 것이며, 동일한 결과를 제공할 수 있다. 이하 도 3을 참조하여 설명한다.
도 3a는 행 방향과 열 방향으로 각각 1 및 Cp의 크기를 갖는 제1풀링 윈도우(20)를 나타낸 것이다. 이때, 상기 제1풀링 윈도우(20)의 열 방향 크기(CP)는 상기 풀링 윈도우(10)의 열 방향 크기(CP)와 동일한 값으로 선택된 것이다.
이하, 도 3a 및 도 3b에서 굵은 선으로 그려진 박스는 제1풀링 윈도우(20)를 나타내고, 도 3d 및 도 3e에서 굵은 선으로 그려진 박스는 제2풀링 윈도우(30, 31)를 나타낸다.
도 3b는 상기 입력 데이터(100)에 상기 제1풀링 윈도우(20)가 겹쳐진 모습을 나타낸 것이다. 도 3b의 입력 데이터(100)는 도 2b의 입력 데이터(100)와 동일한 것이다.
도 3b에 나타낸 예에서 제1풀링 윈도우(20)가 입력 데이터(100)에 대하여 행 방향으로 1칸씩 이동하고(행 방향 Stride=1), 열 방향으로 1칸씩 이동한다(열 방향 Stride=1).
도 3c는 입력 데이터(100)를 제1풀링 윈도우(20)로 풀링하여 얻은 임시 데이터(110)를 나타낸 것이다. 임시 데이터(110)는 행 방향과 열 방향으로 각각 R 및 C-Cp+1의 크기를 갖는다.
도 3b는 제1풀링 윈도우(20)가 입력 데이터(100)의 엘리먼트들{(1,1), (1,2), (1,3)}를 덮고 있는 상태를 나타낸 것이다.
이때, 제1풀링 윈도우(20)에 의한 풀링 방식과 상기 풀링 윈도우(10)에 의한 풀링 방식은 서로 동일하다. 예컨대, 상기 풀링 윈도우(10)에 의한 풀링이 MAX 풀링이라면, 상기 제1풀링 윈도우(20)에 의한 풀링 역시 MAX 풀링이다. 그리고 이때, 임시 데이터(110)의 엘리먼트(1,1)는 입력 데이터(100)의 엘리먼트들{(1,1), (1,2), (1,3)} 중 가장 큰 값과 동일할 수 있다. 즉, 임시 데이터(110)의 엘리먼트(x,y)는 입력 데이터(100)의 엘리먼트들{(x,y), (x,y+1), (x,y+2)} 중 가장 큰 값과 동일할 수 있다.
도 3d는 행 방향과 열 방향으로 각각 Rp 및 1 크기를 갖는 제2풀링 윈도우(30, 31)를 나타낸 것이다. 이때, 상기 제2풀링 윈도우(30, 31)의 행 방향 크기(RP)는 상기 풀링 윈도우(10)의 행 방향 크기(RP)와 동일한 값으로 선택된 것이다.
도 3e는 상기 임시 데이터(110)에 제2풀링 윈도우(30, 31)가 겹쳐진 모습을 나타낸 것이다.
도 3e에 나타낸 예에서 제2풀링 윈도우(30, 31)가 임시 데이터(110)에 대하여 행 방향으로 1칸씩 이동하고(행 방향 Stride=1), 열 방향으로 1칸씩 이동한다(열 방향 Stride=1).
도 3f는 임시 데이터(110)를 제2풀링 윈도우(30, 31)로 풀링하여 얻은 풀링 데이터(200)를 나타낸 것이다. 풀링 데이터(200)는 행 방향과 열 방향으로 각각 R-Rp+1 및 C-Cp+1의 크기를 갖는다.
이때, 제2풀링 윈도우(30, 31)에 의한 풀링 방식과 상기 풀링 윈도우(10)에 의한 풀링 방식은 서로 동일하다. 예컨대, 상기 풀링 윈도우(10)에 의한 풀링이 MAX 풀링이라면, 상기 제2풀링 윈도우(30, 31)에 의한 풀링 역시 MAX 풀링이다. 그리고 이때, 풀링 데이터(200)의 엘리먼트(1,1)는 임시 데이터(110)의 엘리먼트들{(1,1), (2,1)} 중 가장 큰 값과 동일할 수 있다. 즉, 풀링 데이터(200)의 엘리먼트(x,y)는 임시 데이터(110)의 엘리먼트들{(x,y), (x+1,y)} 중 가장 큰 값과 동일할 수 있다.
도 4a 내지 도 4h는 본 발명의 다른 실시예에 따라 제공되는 풀링 방법을 나타낸 것이다. 이하 도 4a 내지 도 4h를 통칭하여 도 4라고 지칭할 수 있다.
도 4에 의한 풀링 방법은 도 2에 의한 풀링 방법과 동일한 결과를 제공하기 위한 것이며, 동일한 결과를 제공할 수 있다. 이하 도 4을 참조하여 설명한다.
도 4a는 행 방향과 열 방향으로 각각 1 및 Cp의 크기를 갖는 제1풀링 윈도우(20)를 나타낸 것이다. 이때, 상기 제1풀링 윈도우(20)의 열 방향 크기(CP)는 상기 풀링 윈도우(10)의 열 방향 크기(CP)와 동일한 값으로 선택된 것이다. 도 4a에 나타낸 제1풀링 윈도우(20)는 도 3a에 나타낸 제1풀링 윈도우(20)와 동일하다.
이하, 도 4a 및 도 4b에서 굵은 선으로 그려진 박스는 제1풀링 윈도우(20)를 나타내고, 도 4e 및 도 4f에서 굵은 선으로 그려진 박스는 제2풀링 윈도우(30, 32)를 나타낸다.
도 4b는 상기 입력 데이터(100)에 상기 제1풀링 윈도우(20)가 겹쳐진 모습을 나타낸 것이다. 도 4b의 입력 데이터(100)는 도 2b의 입력 데이터(100)와 동일한 것이다.
도 4b에 나타낸 예에서 제1풀링 윈도우(20)가 입력 데이터(100)에 대하여 행 방향으로 1칸씩 이동하고(행 방향 Stride=1), 열 방향으로 1칸씩 이동한다(열 방향 Stride=1).
도 4c는 입력 데이터(100)를 제1풀링 윈도우(20)로 풀링하여 얻은 임시 데이터(110)를 나타낸 것이다. 임시 데이터(110)는 행 방향과 열 방향으로 각각 R 및 C-Cp+1의 크기를 갖는다.
도 4b는 제1풀링 윈도우(20)가 입력 데이터(100)의 엘리먼트들{(1,1), (1,2), (1,3)}를 덮고 있는 상태를 나타낸 것이다.
도 4a, 도 4b, 및 도 4c는 각각 도 3a, 도 3b, 및 도 3c와 동일하다는 점을 이해할 수 있다.
도 3에서 설명한 것과 동일하게, 제1풀링 윈도우(20)에 의한 풀링 방식과 상기 풀링 윈도우(10)에 의한 풀링 방식은 서로 동일하다.
도 4d는 상기 임시 데이터(110)를 트랜스포즈하여 생성한 트랜스포즈 데이터(120)이다. 즉, 상기 임시 데이터(110)의 엘리먼트(x,y)는 상기 트랜스포즈 데이터(120)의 엘리먼트(y,x)와 동일한 값을 갖는다. 트랜스포즈 데이터(120)는 행 방향과 열 방향으로 각각 C-Cp+1 및 R의 크기를 갖는다.
도 4e는 행 방향과 열 방향으로 각각 1 및 Rp 크기를 갖는 제2풀링 윈도우(30, 32)를 나타낸 것이다. 이때, 상기 제2풀링 윈도우(30, 32)의 열 방향 크기(RP)는 상기 풀링 윈도우(10)의 행 방향 크기(RP)와 동일한 값으로 선택된 것이다.
도 4e에 나타낸 제2풀링 윈도우(30, 32)와 도 3d에 나타낸 제2풀링 윈도우(30, 31)는 다음과 같은 공통점 및 차이점이 있다. 즉, 도 4e에 나타낸 제2풀링 윈도우(30, 32)와 도 3d에 나타낸 제2풀링 윈도우(30, 31)는 모두 그 크기가 상기 풀링 윈도우(10)의 행 방향 크기(RP)와 동일한 1차원 어레이라는 점에서 공통점이 있다. 그리고 다른 점으로는, 도 4e에 나타낸 제2풀링 윈도우(30, 32)는 열 방향을 따라 연장된 반면, 도 3d에 나타낸 제2풀링 윈도우(30, 31)는 행 방향을 따라 연장되었다는 점에서 차이가 있다.
도 4f는 상기 트랜스포즈 데이터(120)에 제2풀링 윈도우(30, 32)가 겹쳐진 모습을 나타낸 것이다.
도 4f에 나타낸 예에서 제2풀링 윈도우(30, 32)가 트랜스포즈 데이터(120)에 대하여 행 방향으로 1칸씩 이동하고(행 방향 Stride=1), 열 방향으로 1칸씩 이동한다(열 방향 Stride=1).
도 4g는 트랜스포즈 데이터(120)를 제2풀링 윈도우(30, 32)로 풀링하여 얻은 제2임시 데이터(130)를 나타낸 것이다. 제2임시 데이터(130)는 행 방향과 열 방향으로 각각 C-Cp+1 및 크기를 갖는다.
이때, 제2풀링 윈도우(30, 32)에 의한 풀링 방식과 상기 풀링 윈도우(10)에 의한 풀링 방식은 서로 동일하다. 예컨대, 상기 풀링 윈도우(10)에 의한 풀링이 MAX 풀링이라면, 상기 제2풀링 윈도우(30, 32)에 의한 풀링 역시 MAX 풀링이다. 그리고 이때, 제2임시 데이터(130)의 엘리먼트(1,1)는 트랜스포즈 데이터(120)의 엘리먼트들{(1,1), (1,2)} 중 가장 큰 값과 동일할 수 있다. 즉, 제2임시 데이터(130)의 엘리먼트(x,y)는 트랜스포즈 데이터(120)의 엘리먼트들{(x,y), (x,y+1)} 중 가장 큰 값과 동일할 수 있다.
도 4h는 상기 제2임시 데이터(130)를 트랜스포즈하여 생성한 풀링 데이터(200)이다. 즉, 상기 제2임시 데이터(130)의 엘리먼트(x,y)는 상기 풀링 데이터(200)의 엘리먼트(y,x)와 동일한 값을 갖는다. 풀링 데이터(200)는 행 방향과 열 방향으로 각각 R-Rp+1 및 C-Cp+1의 크기를 갖는다.
도 5a 내지 도 5f는 본 발명의 다른 실시예에 따라 제공되는 풀링 방법을 나타낸 것이다. 이하 도 5a 내지 도 5f를 통칭하여 도 5라고 지칭할 수 있다.
도 5에 의한 풀링 방법은 도 2에 의한 풀링 방법과 동일한 결과를 제공하기 위한 것이며, 동일한 결과를 제공할 수 있다. 이하 도 5를 참조하여 설명한다.
도 5a는 행 방향과 열 방향으로 각각 1 및 Cp의 크기를 갖는 제1풀링 윈도우(20)를 나타낸 것이다. 이때, 상기 제1풀링 윈도우(20)의 열 방향 크기(CP)는 상기 풀링 윈도우(10)의 열 방향 크기(CP)와 동일한 값으로 선택된 것이다. 도 5a에 나타낸 제1풀링 윈도우(20)는 도 3a에 나타낸 제1풀링 윈도우(20)와 동일하다.
이하, 도 5a 및 도 5b에서 굵은 선으로 그려진 박스는 제1풀링 윈도우(20)를 나타내고, 도 5d 및 도 5e에서 굵은 선으로 그려진 박스는 제2풀링 윈도우(30, 32)를 나타낸다.
도 5b는 상기 입력 데이터(100)에 상기 제1풀링 윈도우(20)가 겹쳐진 모습을 나타낸 것이다. 도 5b의 입력 데이터(100)는 도 2b의 입력 데이터(100)와 동일한 것이다. 도 5b는 제1풀링 윈도우(20)가 입력 데이터(100)의 엘리먼트들{(1,1), (1,2), (1,3)}에 오버랩 된 상태를 나타낸 것이다.
도 5b에 나타낸 예에서 제1풀링 윈도우(20)가 입력 데이터(100)에 대하여 행 방향으로 1칸씩 이동하고(행 방향 Stride=1), 열 방향으로 1칸씩 이동한다(열 방향 Stride=1).
바람직한 일 실시예에서, 제1풀링 윈도우(20)가 오버랩되는 입력 데이터(100)의 열 번호(열 인데스 번호, column index number)보다 행 번호(행 인덱스 번호, row index number)를 우선적으로 증가시키면서 제1풀링 윈도우(20)를 이용한 풀링을 수행할 수 있다. 즉, 제1풀링 윈도우(20)가 오버랩되는 입력 데이터(100)의 열 번호(column number)가 고정된 상태에서 행 번호(row number)를 증가시키면서 풀링을 수행한다.
예컨대 상기 바람직한 일 실시예를 도 5b의 입력 데이터(100)에 적용하면, 먼저 제1풀링 윈도우(20)가 오버랩되는 입력 데이터(100)의 열 번호가 {1, 2, 3}으로 고정된 상태에서 행 번호를 1→2→3→4→5로 증가시키면서 제1풀링 윈도우(20)를 이용한 풀링을 총 5회 수행할 수 있다. 그 다음 제1풀링 윈도우(20)가 오버랩되는 입력 데이터(100)의 열 번호를 {2, 3, 4}로 stride 1만큼 증가시킨 상태에서 행 번호를 1→2→3→4→5로 증가시키면서 제1풀링 윈도우(20)를 이용한 풀링을 총 5회 추가로 수행할 수 있다. 이러한 과정을 열 번호를 증가시키면서 반복할 수 있다.
도 5c는 입력 데이터(100)를 제1풀링 윈도우(20)로 풀링하여 얻은 임시 데이터(110)를 나타낸 것이다.
임시 데이터(110)의 저장을 위한 메모리 공간은 미리 준비될 수 있다.
상기 메모리 공간의 행의 총 개수, 즉 상기 임시 데이터(110)의 행의 총 개수는, 상기 제1풀링 윈도우(20)가 입력 데이터(100)의 특정 행에 오버랩될 수 있는 상태의 총 개수와 동일할 수 있다. 다른 말로, 상기 메모리 공간의 행의 총 개수는, 상기 제1풀링 윈도우(20)가 입력 데이터(100)에 오버랩되어 행의 길이 방향을 따라 배치될 수 있는 총 경우의 개수와 동일할 수 있다. 예컨대, 도 5b에서, 상기 제1풀링 윈도우(20)가 입력 데이터(100)의 제1행에 오버랩될 때에, 상기 제1풀링 윈도우(20)는 상기 입력데이터(100)의 제11엘리먼트 쌍 {(1,1), (1,2), (1,3)}, 제12엘리먼트 쌍 {(1,2), (1,3), (1,4)}, 또는 제13엘리먼트 쌍 {(1,3), (1,4), (1,5)}에 오버랩될 수 있다. 즉, 상기 제1풀링 윈도우(20)가 입력 데이터(100)의 특정 행에 오버랩 될 수 있는 상태의 총 개수는 3이므로, 상기 메모리 공간의 행의 총 개수는 3이다. 즉, 상기 임시 데이터(110)의 행의 총 개수는 3이다.
그리고 상기 메모리 공간의 열의 총 개수, 즉 상기 임시 데이터(110)의 열의 총 개수는, 상기 제1풀링 윈도우(20)가 입력 데이터(100)의 특정 열 쌍(pair of columns)에 오버랩될 수 있는 상태의 총 개수와 동일할 수 있다. 다른 말로, 상기 메모리 공간의 열의 총 개수는, 상기 제1풀링 윈도우(20)가 입력 데이터(100)에 오버랩되어 열의 길이 방향을 따라 배치될 수 있는 총 경우의 개수와 동일할 수 있다. 예컨대, 도 5b에서, 상기 제1풀링 윈도우(20)가 입력 데이터(100)의 제1열, 제2열, 및 제3열에 오버랩될 때에, 상기 제1풀링 윈도우(20)는 상기 입력 데이터(100)의 제11엘리먼트 쌍 {(1,1), (1,2), (1,3)}, 제21엘리먼트 쌍 {(2,1), (2,2), (2,3)}, 제31엘리먼트 쌍 {(3,1), (3,2), (3,3)}, 제41엘리먼트 쌍 {(4,1), (4,2), (4,3)}, 또는 제51엘리먼트 쌍 {(5,1), (5,2), (5,3)}에 오버랩될 수 있다. 즉, 상기 제1풀링 윈도우(20)가 입력 데이터(100)의 특정 열들의 쌍에 오버랩 될 수 상태의 총 개수는 5이므로, 상기 메모리 공간의 열의 총 개수는 5이다. 즉, 상기 임시 데이터(110)의 열의 총 개수는 5이다.
도 5b와 같이, 행 방향과 열 방향으로 각각 1 및 Cp의 크기를 갖는 제1풀링 윈도우(20)를 이용하여, 행 방향과 열 방향으로 각각 R 및 C의 크기를 갖는 입력 데이터(100)를, 행 방향으로 1칸씩 이동(행 방향 Stride=1)하고, 열 방향으로 1칸씩 이동(열 방향 Stride=1)하는 경우에는, 상기 임시 데이터(110)는 행 방향과 열 방향으로 각각 C-Cp+1 및 R의 크기를 갖는다.
바람직한 일 실시예에서, 입력 데이터(100)의 엘리먼트 쌍 {(i, j), (i, j+1), (i, j+2)}와 상기 제1풀링 윈도우(20)를 오버랩하여 풀링한 데이터는 임시 데이터(110)의 엘리먼트 (j, i)에 저장한다. 여기서 i는 행 인덱스이고, j는 열 인덱스이다.
바람직한 일 실시예에서, 아래의 두 가지 조건을 모두 충족시키면, 임시 데이터(110)의 행 번호보다 열 번호를 우선적으로 증가시키면서 임시 데이터(110)의 각 엘리먼트의 값들을 결정할 수 있다.
*첫째 조건: 도 5b에서 상술한 바와 같이 제1풀링 윈도우(20)가 오버랩되는 입력 데이터(100)의 열 번호보다 행 번호를 우선적으로 증가시키면서 제1풀링 윈도우(20)를 이용한 풀링을 수행하는 조건.
*둘째 조건: 입력 데이터(100)의 엘리먼트 쌍 {(i, j), (i, j+1), (i, j+2)}와 상기 제1풀링 윈도우(20)를 오버랩하여 풀링한 데이터는 임시 데이터(110)의 엘리먼트 (j, i)에 저장하는 조건.
이때, 도 2의 상기 풀링 윈도우(10)에 의한 풀링 방식은 도 5의 제1풀링 윈도우(20)에 의한 풀링 방식과 서로 동일하다. 예컨대 상기 풀링 윈도우(10)에 의한 풀링 방식이 MAX 풀링인 경우 제1풀링 윈도우(20)에 의한 풀링 방식도 MAX 풀링이다. 다른 예로, 상기 풀링 윈도우(10)에 의한 풀링 방식이 average 풀링인 경우 제1풀링 윈도우(20)에 의한 풀링 방식도 average 풀링이다.
도 5c에 제시한 임시 데이터(110)의 디멘젼 및 그 값은 도 4d에 제시한 트랜스포즈 데이터(120)의 디멘젼 및 그 값과 동일할 수 있다.
본 발명의 일 실시예에 따라 제공되는 컴퓨팅 장치는, 도 5c에 제시한 임시 데이터(110)의 한 개의 특정 행에 포함된 복수 개의 엘리먼트들을 버스트 방식으로 버퍼, 레지스터, SRAM, 또는 DRAM 등의 메모리에 저장할 수 있다. 즉, 임시 데이터(110)의 한 개의 특정 행에 포함된 복수 개의 엘리먼트들은 상기 메모리의 한 개의 워드(word)에 저장될 수 있다.
도 5d는 행 방향과 열 방향으로 각각 1 및 Rp 크기를 갖는 제2풀링 윈도우(30, 32)를 나타낸 것이다. 이때, 상기 제2풀링 윈도우(30, 32)의 열 방향 크기(RP)는 도 2의 상기 풀링 윈도우(10)의 행 방향 크기(RP)와 동일한 값으로 선택된 것이다.
도 5d에 나타낸 제2풀링 윈도우(30, 32)와 도 3d에 나타낸 제2풀링 윈도우(30, 31)는 다음과 같은 공통점 및 차이점이 있다. 즉, 도 5d에 나타낸 제2풀링 윈도우(30, 32)와 도 3d에 나타낸 제2풀링 윈도우(30, 31)는 모두 그 크기가 상기 풀링 윈도우(10)의 행 방향 크기(RP)와 동일한 1차원 어레이라는 점에서 공통점이 있다. 그리고 다른 점으로는, 도 5d에 나타낸 제2풀링 윈도우(30, 32)는 열 방향을 따라 연장된 반면, 도 3d에 나타낸 제2풀링 윈도우(30, 31)는 행 방향을 따라 연장되었다는 점에서 차이가 있다.
도 5e는 상기 임시 데이터(110)의 제11엘리먼트들{(1,1), (1,2)}에 제2풀링 윈도우(30, 32)가 오버랩 된 모습을 나타낸 것이다.
이때, 도 5e에 제시된 것과 같이, 상기 임시 데이터(110)를 제2풀링 윈도우(30, 32)를 이용하여 풀링하기 위하여, 본 발명의 일 실시예에 따라 제공되는 컴퓨팅 장치는, 상기 메모리에 저장되어 있던 상기 임시 데이터(110)를 읽을 수 있다. 바람직한 일 실시예에서, 상기 임시 데이터(110)의 특정 행을 모두 읽은 후에 다른 행을 읽도록 되어 있을 수 있다. 이는 상기 메모리로부터 상기 임시 데이터(110)를 읽을 때에 워드(word) 단위로 읽을 수 있는데, 이 경우 임시 데이터(110)의 특정 행을 모두 읽은 후에 다른 행이 읽히기 때문이다.
도 5e에 나타낸 예에서 제2풀링 윈도우(30, 32)가 임시 데이터(110)에 대하여 행 방향으로 1칸씩 이동하고(행 방향 Stride=1), 열 방향으로 1칸씩 이동한다(열 방향 Stride=1).
바람직한 일 실시예에서, 제2풀링 윈도우(30, 32)가 오버랩되는 임시 데이터(110)의 행 번호(행 인덱스 번호, row index number)보다 열 번호(열 인데스 번호, column index number)를 우선적으로 증가시키면서 제2풀링 윈도우(30, 32)를 이용한 풀링을 수행할 수 있다. 즉, 제2풀링 윈도우(30, 32)가 오버랩되는 임시 데이터(110)의 행 번호(row number)가 고정된 상태에서 열 번호(column number)를 증가시키면서 풀링을 수행한다. 일 실시예에서 상기 메모리로부터 임시 데이터(110)를 읽을 때에 특정 행을 모두 읽은 후에야 다른 행을 읽게 되는 경우에는, 이와 같이 행보다 열에 우선순위를 두어 제2풀링 윈도우(30, 32)를 이동시키는 것이 합리적이라는 점은 쉽게 이해될 수 있다.
예컨대 먼저 제2풀링 윈도우(30, 32)가 오버랩되는 임시 데이터(110)의 행 번호를 {1}로 고정한 상태에서, 제2풀링 윈도우(30, 32)를 행의 길이 방향을 따라 이동시키면서 풀링을 총 3회 수행할 수 있다. 그 다음 제2풀링 윈도우(30, 32)가 오버랩되는 임시 데이터(110)의 행 번호를 {2}로 stride 1만큼 증가시킨 상태에서, 제2풀링 윈도우(30, 32)를 행의 길이 방향을 따라 이동시키면서 풀링을 총 3회 추가로 수행할 수 있다. 이러한 과정을 행 번호를 증가시키면서 반복할 수 있다.
본 명세서에서 행 번호(행 인덱스 번호) 및 열 번호(열 인덱스 번호)를 증가시키기 위해, 실제로 컴퓨팅 장치에서 실행되는 소프트웨어 또는 컴퓨팅 장치의 하드웨어에서 반드시 이에 행 번호 및 열 번호에 관한 변수를 정의하여 그 값을 변화시켜야만 하는 것은 아니다. 본 명세서에서 행 번호(행 인덱스 번호) 및 열 번호(열 인덱스 번호)를 증가시킨다는 개념은 다양한 방식으로 실현될 수 있다.
도 5f는 임시 데이터(110)을 제2풀링 윈도우(30, 32)로 풀링하여 얻은 풀링 데이터(200)를 나타낸 것이다.
풀링 데이터(200)의 저장을 위한 메모리 공간은 미리 준비될 수 있다.
상기 메모리 공간의 행의 총 개수, 즉 상기 풀링 데이터(200)의 행의 총 개수는, 상기 제2풀링 윈도우(30, 32)가 임시 데이터(110)의 특정 행에 오버랩 될 수 있는 상태의 총 개수와 동일할 수 있다. 다른 말로, 상기 메모리 공간의 행의 총 개수는, 상기 제2풀링 윈도우(30, 32)가 임시 데이터(110)에 오버랩 되어 행의 길이 방향을 따라 배치될 수 있는 총 경우의 개수와 동일할 수 있다. 예컨대, 도 5e에서, 상기 제2풀링 윈도우(30, 32)가 임시 데이터(110)의 제1행에 오버랩 될 때에, 상기 제2풀링 윈도우(30, 32)는 상기 임시 데이터(110)의 제11엘리먼트 쌍 {(1,1), (1,2)}, 제12엘리먼트 쌍 {(1,2), (1,3)}, 제13엘리먼트 쌍 {(1,3), (1,4)}, 또는 제14엘리먼트 쌍 {(1,4), (1,5)}에 오버랩 될 수 있다. 즉, 상기 제2풀링 윈도우(30, 32)가 임시 데이터(110)의 특정 행에 오버랩 될 수 있는 상태의 총 개수는 4이므로, 상기 메모리 공간의 행의 총 개수는 4이다. 즉, 상기 풀링 데이터(200)의 행의 총 개수는 4이다.
그리고 상기 메모리 공간의 열의 총 개수, 즉 상기 풀링 데이터(200)의 열의 총 개수는, 상기 제2풀링 윈도우(30, 32)가 임시 데이터(110)의 특정 열 쌍(pair of columns)에 오버랩 될 수 있는 상태의 총 개수와 동일할 수 있다. 다른 말로, 상기 메모리 공간의 열의 총 개수는, 상기 제2풀링 윈도우(30, 32)가 임시 데이터(110)에 오버랩 되어 열의 길이 방향을 따라 배치될 수 있는 총 경우의 개수와 동일할 수 있다. 예컨대, 도 5e에서, 상기 제2풀링 윈도우(30, 32)가 임시 데이터(110)의 제1열 및 제2열에 오버랩 될 때에, 상기 제2풀링 윈도우(30, 32)는 임시 데이터(110)의 제11엘리먼트 쌍 {(1,1), (1,2)}, 제21엘리먼트 쌍 {(2,1), (2,2)}, 또는 제31엘리먼트 쌍 {(3,1), (3,2)}에 오버랩 될 수 있다. 즉, 상기 제2풀링 윈도우(30, 32)가 임시 데이터(110)의 특정 열들의 쌍에 오버랩 될 수 상태의 총 개수는 3이므로, 상기 메모리 공간의 열의 총 개수는 3이다. 즉, 상기 풀링 데이터(200)의 열의 총 개수는 3이다.
도 5d와 같이, 행 방향과 열 방향으로 각각 1 및 Rp의 크기를 갖는 제2풀링 윈도우(30, 32)를 이용하여, 행 방향과 열 방향으로 각각 C-CP-1 및 R 의 크기를 갖는 임시 데이터(110)를, 행 방향으로 1칸씩 이동(행 방향 Stride=1)하고, 열 방향으로 1칸씩 이동(열 방향 Stride=1)하는 경우에는, 상기 풀링 데이터(200)는 행 방향과 열 방향으로 각각 R-Rp+1 및 C-Cp+1의 크기를 갖는다.
바람직한 일 실시예에서, 임시 데이터(110)의 엘리먼트 쌍 {(i, j), (i, j+1)}와 상기 제2풀링 윈도우(30, 32)를 오버랩하여 풀링한 데이터는 풀링 데이터(200)의 엘리먼트 (j, i)에 저장한다. 여기서 i는 행 인덱스이고, j는 열 인덱스이다.
바람직한 일 실시예에서, 아래의 두 가지 조건을 모두 충족시키면, 임시 데이터(110)의 행 번호보다 열 번호를 우선적으로 증가시키면서 풀링 데이터(200)의 각 엘리먼트의 값들을 결정할 수 있다.
*첫째 조건: 제2풀링 윈도우(30, 32)가 오버랩 되는 임시 데이터(110)의 행 번호보다 열 번호를 우선적으로 증가시키면서 제2풀링 윈도우(30, 32)를 이용한 풀링을 수행하는 조건.
*둘째 조건: 임시 데이터(110)의 엘리먼트 쌍 {(i, j), (i, j+1)}와 상기 제2풀링 윈도우(30, 32)를 오버랩하여 풀링한 데이터는 풀링 데이터(200)의 엘리먼트 (j, i)에 저장하는 조건.
이때, 도 2의 상기 풀링 윈도우(10)에 의한 풀링 방식은 도 5의 제2풀링 윈도우(30, 32)에 의한 풀링 방식과 서로 동일하다. 예컨대 상기 풀링 윈도우(10)에 의한 풀링 방식이 MAX 풀링인 경우 제2풀링 윈도우(30, 32)에 의한 풀링 방식도 MAX 풀링이다. 다른 예로, 상기 풀링 윈도우(10)에 의한 풀링 방식이 average 풀링인 경우 제2풀링 윈도우(30, 32)에 의한 풀링 방식도 average 풀링이다.
도 5f에 제시한 데이터는 도 4h에 제시한 데이터와 동일할 수 있다.
도 2c에 나타낸 풀링 데이터(200), 도 3f에 나타낸 풀링 데이터(200), 도 4h, 및 도 5f에 나타낸 풀링 데이터(200)는 서로 동일한 것이다. 즉, 기존의 방법(도 2), 본 발명이 제1실시예(도 3), 본 발명이 제2실시예(도 4), 및 본 발명이 제3실시예(도 5)에 의해 동일한 풀링 연산 결과를 얻을 수 있다.
도 2, 도 3, 도 4, 및 도 5에서, 설명의 편의를 위해 풀링이 MAX 풀링인 경우를 나타내었으나, MIN 풀링 또는 Average 풀링과 같은 다른 종류의 풀링이 이용될 수도 있다.
이하, 각 풀링 방법에 따른 연산량을 살펴볼 수 있다.
우선, (Rp,Cp)의 크기를 갖는 풀링 윈도우(10), (1,Cp)의 크기를 갖는 제1풀링 윈도우(20), 그리고 (1,Rp) 또는 (Rp,1)의 크기를 갖는 제2풀링 윈도우(30)로 각각 1회 풀링 연산을 수행하기 위한 연산량은 각각 CalA(Rp,Cp), CalA(Cp), 및 CalA(Rp)라고 정의할 수 있다.
이때, 도 2에 제시한 방법에 따르면, 풀링 데이터(200)를 얻기 위한 총 풀링 연산량은 수식 1과 같이 주어진다.
[수식 1]
TCalA1 = CalA(Rp,Cp) * (R-Rp+1) * (C-Cp+1)
그리고 도 3에 제시한 방법 및 도 4에 제시한 방법 모두, 풀링 데이터(200)를 얻기 위한 총 풀링 연산량은 수식 2와 같이 주어진다.
[수식 2]
TCalA2 = CalA(Cp) * (R) * (C-Cp+1) + CalA(Rp) * (R-Rp+1) * (C-Cp+1)
이때, TCalA1 > TCalA2가 성립하는 경우라면, 도 3, 도 4, 또는 도 5의 실시예에 의한 풀링 방법의 연산량이 도 2에 의한 풀링 방법의 연산량보다 작다는 점을 이해할 수 있다.
도 6은 본 발명의 일 실시예에 따라 제공되는 풀링 방법이 적용될 수 있는 하드웨어의 구성예를 나타낸 것이다.
도 6은 상기 풀링 방법을 하드웨어로 구현한 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.
컴퓨팅 장치(1)는, DRAM(Dynamic Random Access Memory)(130), 하드웨어 가속기(110), DRAM(130)와 하드웨어 가속기(110)를 연결하는 버스(700), 및 버스(700)에 연결된 타 하드웨어들(99)을 포함할 수 있다.
그 밖에 컴퓨팅 장치(1)는 도시되지 않은 전원부, 통신부, 메인 프로세서, 사용자 인터페이스, 저장부, 및 주변 장치부들을 더 포함할 수 있다. 버스(700)는 상기 하드웨어 가속기(110)와 타 하드웨어들(99)이 공유할 수도 있다.
상기 하드웨어 가속기(110)는 DMA부(Direct Memory Access part)(20), 제어부(40), 내부 메모리(30), 입력버퍼(650), 데이터 연산부(610), 및 출력버퍼(640)를 포함할 수 있다.
내부 메모리(30)에 임시 저장되는 데이터의 일부 또는 전부는 버스(700)를 통해 DRAM(130)으로부터 제공될 수 있다. 이때, DRAM(130)에 저장되어 있는 데이터를 내부 메모리(30)로 이동시키기 위하여, 제어부(40)와 DMA부(20)가 내부 메모리(30) 및 DRAM(130)을 제어할 수도 있다.
내부 메모리(30)에 저장되어 있던 데이터는 입력버퍼(650)를 통해 데이터 연산부(610)에게 제공될 수 있다.
상기 데이터 연산부(610)가 동작하여 생성된 출력값들은 출력버퍼(640)을 거쳐 상기 내부 메모리(30)에 저장될 수 있다. 상기 내부 메모리(30)에 저장된 상기 출력값들은 제어부(40) 및 DMA부(20)의 제어에 의해 DRAM(130)에 기록될 수도 있다.
제어부(40)는 DMA부(20), 내부 메모리(30), 및 상기 데이터 연산부(610)의 동작을 총괄하여 제어할 수 있다.
일 구현예에서, 상기 데이터 연산부(610)는 제1시구간 동안에는 제1연산기능을 수행하고 제2시구간 동안에는 제2연산기능을 수행할 수 있다.
일 실시예에서, 도 6에 나타낸 상기 데이터 연산부(610)는 상기 하드웨어 가속기(110) 내에 복수 개 제공되어 각각 제어부(40)에 의해 요청된 연산을 병렬적으로 수행할 수도 있다.
일 구현예에서, 상기 데이터 연산부(610)는 그 출력데이터를 한 번에 출력하지 않고 시간에 따라 주어진 순서에 따라 순차적으로 출력할 수 있다.
도 7은 도 3 또는 도 5에 제시한 풀링 방법을 도 6에 제시한 하드웨어로 구현하는 방법을 나타낸 것이다.
도 7의 (a) 및 도 7의 (b)는 각각 상기 제1시구간 및 제2시구간 동안 도 6에 도시한 상기 내부 메모리(30), 상기 입력버퍼(650), 상기 데이터 연산부(610), 및 상기 출력버퍼(640)에서 수행되는 동작을 설명하기 위한 것이다.
상기 제1시구간에서, 내부 메모리(30)에 저장되어 있던 입력 데이터(100)는 상기 입력버퍼(650)에 제공될 수 있다. 상기 입력버퍼(650)에 저장되어 있던 상기 입력 데이터(100)는 데이터 연산부(610)에게 제공될 수 있다. 상기 제1시구간에서 상기 데이터 연산부(610)는 도 3c 또는 도 5c에 제시된 임시 데이터(110)를 생성하도록 되어 있다. 상기 데이터 연산부(610)가 출력한 상기 임시 데이터(110)는 상기 출력버퍼(640)에 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 임시 데이터(110)는 상기 내부 메모리(30)에게 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 임시 데이터(110)는 외부의 DRAM(130)에게 전달되었다가, 다시 상기 DRAM(130)으로부터 상기 출력버퍼(640)에 다시 로드될 수도 있다.
상기 제2시구간에서, 내부 메모리(30)에 저장되어 있던 상기 임시 데이터(110)는 상기 입력버퍼(650)에 제공될 수 있다. 상기 입력버퍼(650)에 저장되어 있던 상기 임시 데이터(110)는 상기 데이터 연산부(610)에게 제공될 수 있다. 상기 제2시구간에서, 상기 데이터 연산부(610)는 도 3f 또는 도 5f에 제시된 풀링 데이터(200)를 생성하도록 되어 있다. 상기 데이터 연산부(610)가 출력한 풀링 데이터(200)는 상기 출력버퍼(640)에 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 풀링 데이터(200)는 상기 내부 메모리(30)에게 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 풀링 데이터(200)는 외부의 DRAM(130)에게 전달되었다가, 다시 상기 DRAM(130)으로부터 상기 출력버퍼(640)에 다시 로드될 수도 있다.
도 8은 도 5에 제시한 풀링 방법을 파이프라인 연산구조를 갖는 데이터 연산부를 이용하여 구현하는 예를 나타낸 것이다.
도 6에 제시한 데이터 연산부(610)는 도 8에 제시한 제1데이터 연산부(611) 및 제2데이터 연산부(612)를 포함할 수 있다.
상기 제1데이터 연산부(611)는 도 5의 상기 입력 데이터(100)를 입력받아 상기 임시 데이터(110)를 출력하도록 되어 있다.
상기 제2데이터 연산부(612)는 상기 제1데이터 연산부(611)가 출력한 상기 임시 데이터(110)를 입력받아 도 5의 상기 풀링 데이터(200)를 출력하도록 되어 있다.
상기 제1데이터 연산부(611)는 도 5c에 제시한 임시 데이터(110) 중 엘리먼트(1,1)를 가장 먼저 생성하여 출력하고 엘리먼트(3,5)를 가장 나중에 생성하여 출력할 수 있다.
상기 제2데이터 연산부(612)는 도 5f에 제시한 풀링 데이터(200) 중 엘리먼트(1,1)를 가장 먼저 생성하여 출력하고 엘리먼트(4,3)를 가장 나중에 생성하여 출력할 수 있다.
도 8과 같이 파이프라인 방식으로 연상하는 경우 임시 데이터(110)를 산출하는 제1시구간과 풀링 데이터(200)를 산출하는 제2시구간은 적어도 일부 오버랩 될 수 있다.
본 명세서에 포함된 도 9a, 도 9b, 도 9c, 및 도 9d를 통칭하여 도 9라고 지칭할 수 있다.
도 9는 도 4에 제시한 풀링 방법을 도 6에 제시한 하드웨어로 구현하는 방법을 나타낸 것이다.
도 9a, 도 9b, 도 9c, 및 도 9d는 각각 상기 제1시구간, 제2시구간, 제3시구간, 및 제4시구간 동안 도 6에 도시한 상기 내부 메모리(30), 상기 입력버퍼(650), 상기 데이터 연산부(610), 및 상기 출력버퍼(640)에서 수행되는 동작을 설명하기 위한 것이다.
상기 제1시구간에서, 내부 메모리(30)에 저장되어 있던 입력 데이터(100)는 상기 입력버퍼(650)에 제공될 수 있다. 상기 입력버퍼(650)에 저장되어 있던 상기 입력 데이터(100)는 데이터 연산부(610)에게 제공될 수 있다. 상기 제1시구간에서 상기 데이터 연산부(610)는 도 4c에 제시된 임시 데이터(110)를 생성하도록 되어 있다. 상기 데이터 연산부(610)가 출력한 상기 임시 데이터(110)는 상기 출력버퍼(640)에 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 임시 데이터(110)는 상기 내부 메모리(30)에게 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 임시 데이터(110)는 외부의 DRAM(130)에게 전달되었다가, 다시 상기 DRAM(130)으로부터 상기 출력버퍼(640)에 다시 로드될 수도 있다.
상기 제2시구간에서, 내부 메모리(30)에 저장되어 있던 임시 데이터(110)는 상기 입력버퍼(650)에 제공될 수 있다. 상기 입력버퍼(650)에 저장되어 있던 상기 임시 데이터(110)는 데이터 연산부(610)에게 제공될 수 있다. 상기 제2시구간에서 상기 데이터 연산부(610)는 도 4d에 제시된 트랜스포즈 데이터(120)를 생성하도록 되어 있다. 상기 데이터 연산부(610)가 출력한 상기 트랜스포즈 데이터(120)는 상기 출력버퍼(640)에 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 트랜스포즈 데이터(120)는 상기 내부 메모리(30)에게 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 트랜스포즈 데이터(120)는 외부의 DRAM(130)에게 전달되었다가, 다시 상기 DRAM(130)으로부터 상기 출력버퍼(640)에 다시 로드될 수도 있다.
상기 제3시구간에서, 내부 메모리(30)에 저장되어 있던 상기 트랜스포즈 데이터(120)는 상기 입력버퍼(650)에 제공될 수 있다. 상기 입력버퍼(650)에 저장되어 있던 상기 트랜스포즈 데이터(120)는 상기 데이터 연산부(610)에게 제공될 수 있다. 상기 제3시구간에서, 상기 데이터 연산부(610)는 도 4g에 제시된 제2임시 데이터(130)를 생성하도록 되어 있다. 상기 데이터 연산부(610)가 출력한 제2임시 데이터(130)는 상기 출력버퍼(640)에 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 제2입시 데이터(130)는 상기 내부 메모리(30)에게 제공될 수 있다.
상기 제4시구간에서, 내부 메모리(30)에 저장되어 있던 상기 제2임시 데이터(130)는 상기 입력버퍼(650)에 제공될 수 있다. 상기 입력버퍼(650)에 저장되어 있던 상기 제2임시 데이터(130)는 상기 데이터 연산부(610)에게 제공될 수 있다. 상기 제4시구간에서, 상기 데이터 연산부(610)는 도 4h에 제시된 풀링 데이터(200)를 생성하도록 되어 있다. 상기 데이터 연산부(610)가 출력한 풀링 데이터(200)는 상기 출력버퍼(640)에 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 풀링 데이터(200)는 상기 내부 메모리(30)에게 제공될 수 있다. 상기 출력버퍼(640)에 저장된 상기 풀링 데이터(200)는 외부의 DRAM(130)에게 전달되었다가, 다시 상기 DRAM(130)으로부터 상기 출력버퍼(640)에 다시 로드될 수도 있다.
상술한 본 발명의 실시예들을 이용하여, 본 발명의 기술 분야에 속하는 자들은 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에 다양한 변경 및 수정을 용이하게 실시할 수 있을 것이다. 특허청구범위의 각 청구항의 내용은 본 명세서를 통해 이해할 수 있는 범위 내에서 인용관계가 없는 다른 청구항에 결합될 수 있다.

Claims (14)

  1. 행렬로 표현 가능한 입력 데이터(100)를 행방향과 열방향의 크기가 각각 Rp 및 Cp인 크기의 풀링 윈도우(10)로 풀링하는 풀링 방법으로서,
    컴퓨팅 장치가, Cp 크기의 제1풀링 윈도우(20)를 이용하여, 상기 입력 데이터(100)를 풀링하여 임시 데이터(110)를 생성하는 단계; 및
    상기 컴퓨팅 장치가, Rp 크기의 제2풀링 윈도우(30)를 이용하여, 상기 임시 데이터(110)를 풀링하여 풀링 데이터(200)를 생성하는 단계;
    를 포함하며,
    상기 입력 데이터(100)는 행 방향과 열 방향으로 각각 R 및 C의 크기를 갖고,
    상기 임시 데이터(110)는 행 방향과 열 방향으로 각각 C-Cp+1 및 R의 크기를 가지며,
    상기 풀링 데이터(200)는 행 방향과 열 방향으로 각각 R-Rp+1 및 C-Cp+1의 크기를 가지며,
    상기 입력 데이터(100)의 엘리먼트 쌍 {(i, j), (i, j+1), ... (i, j+CP-1)}과 상기 제1풀링 윈도우(20)를 오버랩하여 풀링한 데이터는 상기 임시 데이터(110)의 엘리먼트 (j, i)에 저장되며(i는 행 인덱스, j는 열 인덱스),
    상기 임시 데이터(110)의 엘리먼트 쌍 {(i, j), (i, j+1), ..., (i, j+Rp-1)}와 상기 제2풀링 윈도우(30, 32)를 오버랩하여 풀링한 데이터는 풀링 데이터(200)의 엘리먼트 (j, i)에 저장되는(i는 행 인덱스, j는 열 인덱스),
    풀링 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 제1풀링 윈도우(20)는 행방향과 열방향의 크기가 각각 1 및 Cp인 윈도우이며,
    상기 제2풀링 윈도우(30, 32)는 행방향과 열방향의 크기가 각각 1 및 Rp인 윈도우인,
    풀링 방법.
  7. 제1항에 있어서, 상기 제1풀링 윈도우의 행방향 스트라이드 및 열방향 스트라이드는 각각 1 및 1인, 풀링 방법.
  8. 제1항에 있어서, 상기 제2풀링 윈도우의 행방향 스트라이드 및 열방향 스트라이드는 각각 1 및 1인, 풀링 방법.
  9. 제1항에 있어서, 상기 풀링은 MAX 풀링, MIN 풀링, 및 Average 풀링 중 어느 하나인, 풀링 방법.
  10. 제1항에 있어서,
    상기 제1풀링 윈도우의 행방향 스트라이드는 Rp/2 이하이고,
    상기 제1풀링 윈도우의 열방향 스트라이드는 Cp/2 이하이며, 그리고
    상기 제2풀링 윈도우의 행방향 스트라이드는 Rp/2 이하인,
    풀링 방법.
  11. 행렬로 표현 가능한 입력 데이터(100)를 행방향과 열방향의 크기가 각각 Rp 및 Cp인 크기의 풀링 윈도우(10)로 풀링하는 풀링 방법을 수행하는 하드웨어 가속기로서,
    제어부(40);
    내무 메모리(30); 및
    데이터 연산부(610);
    를 포함하며,
    상기 제어부는,
    상기 데이터 연산부로 하여금, 제1시구간에, Cp 크기의 제1풀링 윈도우(20)를 이용하여, 상기 입력 데이터(100)를 풀링하여 임시 데이터(110)를 생성하는 단계를 수행하도록 되어 있고, 그리고
    상기 데이터 연산부로 하여금, 상기 제1시구간 이후의 제2시구간에, Rp 크기의 제2풀링 윈도우(30)를 이용하여, 상기 임시 데이터(110)를 풀링하여 풀링 데이터(200)를 생성하는 단계를 수행하도록 되어 있고,
    상기 입력 데이터(100)는 행 방향과 열 방향으로 각각 R 및 C의 크기를 갖고,
    상기 임시 데이터(110)는 행 방향과 열 방향으로 각각 C-Cp+1 및 R의 크기를 가지며,
    상기 풀링 데이터(200)는 행 방향과 열 방향으로 각각 R-Rp+1 및 C-Cp+1의 크기를 가지며,
    상기 입력 데이터(100)의 엘리먼트 쌍 {(i, j), (i, j+1), ... (i, j+CP-1)}과 상기 제1풀링 윈도우(20)를 오버랩하여 풀링한 데이터는 상기 임시 데이터(110)의 엘리먼트 (j, i)에 저장되며(i는 행 인덱스, j는 열 인덱스),
    상기 임시 데이터(110)의 엘리먼트 쌍 {(i, j), (i, j+1), ..., (i, j+Rp-1)}와 상기 제2풀링 윈도우(30, 32)를 오버랩하여 풀링한 데이터는 풀링 데이터(200)의 엘리먼트 (j, i)에 저장되는(i는 행 인덱스, j는 열 인덱스),
    하드웨어 가속기.
  12. 삭제
  13. 제11항에 있어서,
    상기 제1풀링 윈도우(20)는 행방향과 열방향의 크기가 각각 1 및 Cp인 윈도우이며,
    상기 제2풀링 윈도우(30, 32)는 행방향과 열방향의 크기가 각각 1 및 Rp인 윈도우인,
    하드웨어 가속기.
  14. 제11항 및 제13항 중 어느 한 항의 상기 하드웨어 가속기;
    메모리(11); 및
    상기 메모리와 상기 하드웨어 가속기 간의 데이터 교환 통로인 버스(700);
    를 포함하는,
    컴퓨팅 장치.
KR1020210072676A 2021-06-04 2021-06-04 고효율 풀링 방법 및 이를 위한 장치 KR102368075B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210072676A KR102368075B1 (ko) 2021-06-04 2021-06-04 고효율 풀링 방법 및 이를 위한 장치
EP21944314.0A EP4350581A1 (en) 2021-06-04 2021-10-21 High-efficiency pooling method and device therefor
PCT/KR2021/014771 WO2022255561A1 (ko) 2021-06-04 2021-10-21 고효율 풀링 방법 및 이를 위한 장치
CN202180100809.XA CN117730328A (zh) 2021-06-04 2021-10-21 高效池化方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210072676A KR102368075B1 (ko) 2021-06-04 2021-06-04 고효율 풀링 방법 및 이를 위한 장치

Publications (1)

Publication Number Publication Date
KR102368075B1 true KR102368075B1 (ko) 2022-02-25

Family

ID=80490198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210072676A KR102368075B1 (ko) 2021-06-04 2021-06-04 고효율 풀링 방법 및 이를 위한 장치

Country Status (4)

Country Link
EP (1) EP4350581A1 (ko)
KR (1) KR102368075B1 (ko)
CN (1) CN117730328A (ko)
WO (1) WO2022255561A1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210073569A1 (en) * 2018-05-30 2021-03-11 SZ DJI Technology Co., Ltd. Pooling device and pooling method
KR20210036715A (ko) * 2019-09-26 2021-04-05 삼성전자주식회사 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110050267B (zh) * 2016-12-09 2023-05-26 北京地平线信息技术有限公司 用于数据管理的系统和方法
US10713816B2 (en) 2017-07-14 2020-07-14 Microsoft Technology Licensing, Llc Fully convolutional color constancy with confidence weighted pooling
US10482337B2 (en) * 2017-09-29 2019-11-19 Infineon Technologies Ag Accelerating convolutional neural network computation throughput
KR20210004229A (ko) * 2019-07-03 2021-01-13 삼성전자주식회사 뉴럴 네트워크 프로세서를 구비하는 이미지 프로세싱 장치 및 이의 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210073569A1 (en) * 2018-05-30 2021-03-11 SZ DJI Technology Co., Ltd. Pooling device and pooling method
KR20210036715A (ko) * 2019-09-26 2021-04-05 삼성전자주식회사 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법

Also Published As

Publication number Publication date
CN117730328A (zh) 2024-03-19
WO2022255561A1 (ko) 2022-12-08
EP4350581A1 (en) 2024-04-10

Similar Documents

Publication Publication Date Title
US11574031B2 (en) Method and electronic device for convolution calculation in neural network
CN107844828B (zh) 神经网络中的卷积计算方法和电子设备
US20220383067A1 (en) Buffer Addressing for a Convolutional Neural Network
US20060265445A1 (en) Method and structure for improving processing efficiency in parallel processing machines for rectangular and triangular matrix routines
CN110807170B (zh) 多样本多通道卷积神经网络Same卷积向量化实现方法
CN111340201A (zh) 卷积神经网络加速器及其执行卷积运算操作的方法
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
US11803360B2 (en) Compilation method, apparatus, computing device and medium
KR20190063393A (ko) 시스톨릭 어레이를 이용한 cnn 처리 장치 및 방법
CN113806261B (zh) 一种面向向量处理器的池化向量化实现方法
KR102368075B1 (ko) 고효율 풀링 방법 및 이를 위한 장치
EP3940541A1 (en) A computer-implemented data processing method, micro-controller system and computer program product
KR102470027B1 (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
KR20230081697A (ko) 팽창 컨볼루션 계산 가속화 방법 및 장치
US20200302290A1 (en) Method for feature data recalibration and apparatus thereof
US20190164035A1 (en) Device for reorganizable neural network computing
US20220197786A1 (en) Data Processing Method and Apparatus, Electronic Device, and Storage Medium
KR102403277B1 (ko) 어레이 풀링 방법 및 이를 위한 장치
CN114330687A (zh) 数据处理方法及装置、神经网络处理装置
CN110766133B (zh) 嵌入式设备中的数据处理方法、装置、设备和存储介质
JP7180751B2 (ja) ニューラルネットワーク回路
CN112257859A (zh) 特征数据处理方法及装置、设备、存储介质
TWI788257B (zh) 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置
KR102515579B1 (ko) 저전력 캡슐 네트워크 동작에 최적화된 보상 프루닝 방법 및 장치
US20230168809A1 (en) Intelligence processor device and method for reducing memory bandwidth

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant