KR20190073303A - 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스 - Google Patents

신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스 Download PDF

Info

Publication number
KR20190073303A
KR20190073303A KR1020180164357A KR20180164357A KR20190073303A KR 20190073303 A KR20190073303 A KR 20190073303A KR 1020180164357 A KR1020180164357 A KR 1020180164357A KR 20180164357 A KR20180164357 A KR 20180164357A KR 20190073303 A KR20190073303 A KR 20190073303A
Authority
KR
South Korea
Prior art keywords
convolution
predetermined number
point
points
depth
Prior art date
Application number
KR1020180164357A
Other languages
English (en)
Other versions
KR102305851B1 (ko
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 난징 호라이즌 로보틱스 테크놀로지 컴퍼니 리미티드
Publication of KR20190073303A publication Critical patent/KR20190073303A/ko
Application granted granted Critical
Publication of KR102305851B1 publication Critical patent/KR102305851B1/ko

Links

Images

Classifications

    • 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/15Correlation function computation including computation of convolution operations
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

신경망의 컨볼루션 계산 방법이 개시되어 있으며, 신경망의 컨볼류션 계산 방법은,
입력 특징 맵, 깊이 방향 컨볼루션 커널들 및 포인트 방향 컨볼루션 커널들을 동적 랜덤 액세스 메모리(DRAM)로부터 판독하는 단계;
모든 포인트 방향 컨볼루션 출력 채널들 상의 지점들의 미리 정해진 제1 수(p)의 출력 특징 값들을 획득하기 위해, 입력 특징 맵, 깊이 방향 컨볼류션 커널들 및 포인트 방향 컨볼류션 커널들에 따라, 깊이 방향 컨볼루션 계산 유닛들 및 포인트 방향 컨볼류션 계산 유닛들에 의해 깊이 방향 컨볼루션 계산들 및 포인트 방향 컨볼루션 계산들을 수행하는 단계 ― 상기 미리 정해진 제1 수(p)는 온-칩 메모리의 사용 가능한 공간, 깊이 방향 컨볼루션 계산 유닛들의 수, 높이 및 폭, 및 입력 특징 맵의 채널 수 차원들 중 적어도 하나에 따라 결정됨 ―;
모든 포인트 방향 컨볼루션 출력 채널들 상의 지점들의 미리 정해진 제1 수(p)의 출력 특징 값들을 온-칩 메모리에 저장하는 단계; 및
모든 포인트 방향 컨볼루션 출력 채널들 상의 모든 지점들의 출력 특징 값들을 획득하기 위해 상기 연산을 반복하는 단계를 포함한다. 따라서 중간 결과들을 저장하기 위한 저장 공간이 줄어들 수 있다.

Description

신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스{METHOD AND ELECTRONIC DEVICE FOR CONVOLUTION CALCULATION IN NEUTRAL NETWORK}
[0001] 본 개시내용은 신경망(neural network)의 기술분야에 관한 것으로, 더 구체적으로는 신경망에서의 콘볼루션 계산(convolution calculation)을 위한 방법 및 전자 디바이스에 관한 것이다.
[0002] 콘볼루션 신경망에 기초하는 심층 학습 기술은 높은 정확도를 갖는 이미지 인식 및 검출, 음성 인식 등에 사용될 수도 있어서, 그것은 안전성 모니터링, 보조 드라이빙, 지능형 동반자 로봇, 지능형 의학적 치료 등의 분야들에서 널리 사용된다.
[0003] 콘볼루션 신경망은 연산 집약적이므로, 신경망의 계산량 및 파라미터들의 양을 감소시키는 것이 현재 연구에서 뜨거운 방향이 되었다. 모바일 네트워크(즉, 모바일넷(MobileNet))는 최신의 특수 콘볼루션 신경망인데, 이는 전통적인 3 차원 콘볼루션 연산을 2 개의 콘볼루션 연산들, 즉, 깊이별 콘볼루션(depthwise convolution) 및 포인트별 콘볼루션(pointwise convolution)으로 분해하는 것에 의해 계산량을 감소시키지만, 계산 정확도는 전통적인 콘볼루션의 계산 정확도와 거의 다르지 않다.
[0004] 모바일넷의 기존 구현 솔루션과 관련하여, 그것이 범용 프로세서(CPU)에 기초하든, 전용 그래픽 프로세서(GPU)에 기초하든, 또는 전용 프로세싱 칩에 기초하든 간에, 깊이별 콘볼루션 연산의 출력을 우선 계산한 후에, 이들을 포인트별 콘볼루션 연산의 입력 데이터로서 취한 후에, 계산들을 수행할 필요가 있다.
[0005] 이 접근법의 단점은, 입력 및 출력의 데이터량이 비교적 클 때, 중간 결과들을 버퍼링하기 위해 보다 큰 온-칩(on-chip) 랜덤 액세스 메모리(SRAM)가 요구된다는 점이다. 그러나, 온-칩 SRAM의 사이즈는 고정되어 있다. 온-칩 SRAM의 사이즈가 중간 결과들을 버퍼링하기에 불충분할 경우, 깊이별 콘볼루션 연산을 다수의 계산들로 분할하고, 깊이별 콘볼루션 연산의 계산 결과들이 완전히 계산되고 오프-칩(off-chip) 메모리(DDR)에 기입될 때까지 각각의 계산 결과를 오프-칩 메모리(DDR)에 기입한 후에, 이들 결과들을 DDR로부터 일괄적으로 판독하고 포인트별 콘볼루션 계산들을 수행할 필요가 있다. 명백히, 이것은 제한된 데이터 송신 대역폭에 막대한 부담을 줄 것이고 시스템 전력 소비의 증가를 초래할 것이다.
[0006] 상술한 기술적 문제를 해결하기 위해, 본 개시내용이 제안된다. 본 개시내용의 실시예들에서는 중간 결과들을 저장하기 위한 저장 공간을 감소시킬 수도 있는 신경망에서의 콘볼루션 계산을 위한 방법 및 전자 디바이스가 제공된다.
[0007] 본 개시내용의 양태에 따르면, 동적 랜덤 액세스 메모리(DRAM)로부터 입력 특징 맵(input feature map), 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들을 판독하는 단계; 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해, 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들에 따라, 깊이별 콘볼루션 계산 유닛들 및 포인트별 콘볼루션 계산 유닛들에 의해, 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하는 단계, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 온-칩 메모리에 저장하는 단계, 및 상술한 연산을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득하는 단계를 포함하는, 신경망에서의 콘볼루션 계산을 위한 방법이 개시된다.
[0008] 일 실시예에서, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하는 단계는, 입력 특징 맵 및 깊이별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산들을 수행하여 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 단계; 및 포인트별 콘볼루션 커널들 및 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들을 수행하여, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하는 단계를 포함한다.
[0009] 일 실시예에서, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하는 단계는, 입력 특징 맵 및 깊이별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산들을 수행하여, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 단계; 포인트별 콘볼루션 커널들 및 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들을 수행하여, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득하는 단계; 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들 및 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 결과들 상에서 누산 계산들을 각각 수행하여, 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 결과들을 생성하는 단계; 및 상술한 연산들을 반복하여, 포인트별 콘볼루션 채널 및 다음의 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들을 수행하고, 이에 대응하여 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 모든 중간 특징 값들 상에서 포인트별 콘볼루션 계산들 및 누산 계산들이 완료될 때까지 후속 연산들을 수행하는 단계를 포함하며, 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들은, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들이다.
[0010] 본 개시내용의 다른 양태에 따르면, 프로세서, 및 프로세서에 의해 실행될 때, 프로세서가 신경망에서의 콘볼루션 계산을 위한 방법을 수행하게 하는 컴퓨터 프로그램 명령어들을 저장하는 메모리를 포함하는 전자 디바이스가 개시되고, 이 방법은, 동적 랜덤 액세스 메모리(DRAM)로부터 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들을 판독하는 단계; 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해, 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들에 따라, 깊이별 콘볼루션 계산 유닛들 및 포인트별 콘볼루션 계산 유닛들에 의해, 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하는 단계; 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 온-칩 메모리에 저장하는 단계; 및 상술한 연산을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득하는 단계를 포함한다.
[0011] 본 개시내용의 다른 양태에 따르면, 프로세서에 의해 실행될 때, 프로세서가 신경망에서의 콘볼루션 계산을 위한 방법을 수행하게 하는 컴퓨터 프로그램 명령어들을 포함하는 컴퓨터 프로그램 제품이 개시되고, 이 방법은, 동적 랜덤 액세스 메모리(DRAM)로부터 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들을 판독하는 단계; 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해, 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들에 따라, 깊이별 콘볼루션 계산 유닛들 및 포인트별 콘볼루션 계산 유닛들에 의해, 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하는 단계; 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 온-칩 메모리에 저장하는 단계; 및 상술한 연산을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득하는 단계를 포함한다.
[0012] 본 개시내용의 다른 양태에 따르면, 프로세서에 의해 실행될 때, 프로세서가 신경망에서의 콘볼루션 계산을 위한 방법을 수행하게 하는 컴퓨터 프로그램 명령어들을 저장하는 컴퓨터 판독가능 및 기입가능 저장 매체가 개시되고, 이 방법은, 동적 랜덤 액세스 메모리(DRAM)로부터 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들을 판독하는 단계; 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해, 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들에 따라, 깊이별 콘볼루션 계산 유닛들 및 포인트별 콘볼루션 계산 유닛들에 의해, 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하는 단계; 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 온-칩 메모리에 저장하는 단계; 및 상술한 연산을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득하는 단계를 포함한다.
[0013] 종래 기술과 비교하여, 본 개시내용의 실시예들에 따른 신경망에서의 콘볼루션 계산 방법 및 전자 디바이스는 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하여 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하고, 상술한 연산들을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득할 수도 있다. 그에 따라, 중간 결과들을 저장하기 위한 저장 공간이 감소될 수도 있어서, 더 효율적인 콘볼루션 신경망이 실현될 수도 있다.
[0014] 본 개시내용의 상술한 그리고 다른 목적들, 특징들 및 이점들은 첨부 도면들을 참조하여 본 개시내용의 실시예들을 더 상세히 설명하는 것을 통해 더 명백해질 것이다. 도면들은 본 개시내용의 실시예들에 대한 추가의 이해를 제공하는 데 사용되고 본 명세서의 일부분을 구성하며, 도면들은, 본 개시내용의 실시예들과 함께, 본 개시내용을 설명하는 데 사용되고 본 개시내용에 대한 제약들이 되는 것으로 여겨지지 않는다. 도면들에서, 동일한 참조 번호는 일반적으로 동일한 부분 또는 단계를 지칭한다.
[0015] 도 1은 종래의 콘볼루션 신경망에서의 콘볼루션 커널의 개략도를 도시한다.
[0016] 도 2a는 모바일넷에서의 깊이별 콘볼루션 연산의 콘볼루션 커널의 개략도를 도시한다.
[0017] 도 2b는 모바일넷에서의 포인트별 콘볼루션 연산의 콘볼루션 커널의 개략도를 도시한다.
[0018] 도 3은 본 개시내용의 실시예에 따른 콘볼루션 계산을 위한 방법의 흐름도를 도시한다.
[0019] 도 4는 본 개시내용의 제1 실시예에 따른, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 흐름도를 도시한다.
[0020] 도 5는 본 개시내용의 제1 실시예에 따른, 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 계산하는 단계의 흐름도를 도시한다.
[0021] 도 6은 본 개시내용의 제1 실시예에 따른, 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 계산하는 단계의 개략도를 도시한다.
[0022] 도 7은 본 개시내용의 제1 실시예에 따른, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값을 계산하는 단계의 흐름도를 도시한다.
[0023] 도 8은 본 개시내용의 제1 실시예에 따른, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 개략도를 도시한다.
[0024] 도 9는 본 개시내용의 실시예에 따른 깊이별 콘볼루션 계산들의 개략도를 도시한다.
[0025] 도 10은 본 개시내용의 실시예에 따른 포인트별 콘볼루션 계산들의 개략도를 도시한다.
[0026] 도 11은 본 개시내용의 제2 실시예에 따른, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값을 계산하는 단계의 흐름도를 도시한다.
[0027] 도 12는 본 개시내용의 제2 실시예에 따른, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 흐름도를 도시한다.
[0028] 도 13은 본 개시내용의 제3 실시예에 따른, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 흐름도를 도시한다.
[0029] 도 14는 본 개시내용의 제3 실시예에 따른, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 계산하는 단계의 개략도를 도시한다.
[0030] 도 15는 본 개시내용의 실시예에 따른 전자 디바이스의 블록도를 도시한다.
[0031] 이하, 본 개시내용에 따른 예시적인 실시예가 도면들을 참조하여 상세히 설명될 것이다. 명백히, 설명된 실시예들은 본 개시내용의 모든 실시예들이 아니라 본 개시내용의 실시예들의 단지 일부분이고, 본 개시내용은 본 명세서에 설명된 예시적인 실시예에 의해 제한되지 않는다는 것을 이해해야 한다.
본 개시내용의 개요
[0032] 콘볼루션 신경망은 일반적으로 다수의 콘볼루션 계층들을 포함할 수도 있다. 각각의 콘볼루션 계층에서, 계층의 콘볼루션 커널은 계층의 입력 특징 맵(입력 특징 데이터 또는 입력 특징 값이라고도 또한 알려짐) 상에서 콘볼루션 연산들을 수행하여 계층의 출력 특징 맵(출력 특징 데이터 또는 출력 특징 값이라고도 또한 알려짐)을 생성하는 데 사용된다. 콘볼루션 신경망의 각각의 계층에서, 입력 특징 맵은 특정 폭 및 높이를 가질 수도 있고, 특정 수의 채널들(깊이라고도 또한 알려짐)을 가질 수도 있다. 각각의 콘볼루션 커널은 동일한(또는 상이한) 폭 및 높이―이 폭 및 높이는 입력 특징 맵의 폭 및 높이보다 더 작음(또는 이들과 동일함)―를 가질 수도 있고, 동일한 수의 채널들―이 채널들의 수는 입력 특징 맵의 채널들의 수와 동일함―을 가질 수도 있다.
[0033] 경량의 신경망으로서, 모바일넷은 깊이별 분리가능 콘볼루션들의 아이디어를 사용하고, 콘볼루션들(예를 들어, 3*3 콘볼루션 커널 또는 더 큰 사이즈)을 계산할 때 퓨징 채널(fusing channel)들 대신에, 그것은 깊이별(또는 채널별이라고 알려짐) 및 1*1 포인트별 콘볼루션 방법을 사용하여 콘볼루션을 분해하여, 속도 및 모델 사이즈가 최적화되도록 하고, 계산 정확도가 기본적으로 유지되도록 한다.
[0034] 다음으로, 종래의 콘볼루션 신경망의 콘볼루션 계산 프로세스와 모바일넷의 콘볼루션 계산 프로세스 사이의 비교가 도 1 내지 도 2b를 참조하여 설명될 것이다.
[0035] 도 1은 종래의 콘볼루션 신경망에서의 콘볼루션 커널들의 개략도를 도시하고, 도 2a는 모바일넷에서의 깊이별 콘볼루션 연산들의 콘볼루션 커널들의 개략도를 도시하고, 도 2b는 모바일넷에서의 포인트별 콘볼루션 연산들의 콘볼루션 커널들의 개략도를 도시한다.
[0036] 도 1에 도시된 바와 같이, 종래의 콘볼루션 신경망에서의 콘볼루션 커널들의 사이즈가 R 개의 로우(row)들 및 S 개의 컬럼(column)들이고, 이때 총 M 개의 채널들 및 N 개의 그러한 콘볼루션 커널들을 갖는다고 가정하면, 그 후에 하나의 포인트를 출력하기 위한 입력 특징 맵에 의한 콘볼루션 계산의 계산량은 R*S*M*N이다. 입력 특징 맵 사이즈가 X 개의 로우들 및 Y 개의 컬럼들이고, 이때 총 M 개의 채널들을 갖는다고 가정하면, 그 후에 전체 콘볼루션 계산의 계산량은 R*S*M*N*X*Y이다. 수식으로 표현하면, 특정 출력 포인트(x,y,n)의 값은 다음과 같다:
Figure pat00001
[0037] 도 2a에 도시된 깊이별 콘볼루션과 도 2b에 도시된 포인트별 콘볼루션의 캐스케이드는 도 1의 종래의 콘볼루션 연산에 대응하는 모바일넷 콘볼루션 연산이다.
[0038] 도 2a의 깊이별 콘볼루션은 종래의 콘볼루션에서의 하나의 콘볼루션 커널의 M 개의 채널들을 M 개의 깊이별 콘볼루션 커널들로 분할하는 것으로 간주될 수도 있는데, 그 각각은 R 개의 로우들 및 S 개의 컬럼들, 그리고 단지 1 개의 채널을 갖는다. M 개의 깊이별 콘볼루션 커널들은 누산 없이 M 개의 채널들의 출력 결과들을 획득하기 위해 입력 특징 맵의 M 개의 채널들과 각각 콘볼빙(convolve)한다. 전체 콘볼루션 계산의 계산량은 R*S*M*1*X*Y이다. 수식으로 표현하면, 특정 출력 포인트(x,y,m)의 값은 다음과 같다:
Figure pat00002
[0039] 도 2b의 포인트별 콘볼루션은, 콘볼루션 커널의 사이즈가 1 개의 로우 및 1 개의 컬럼이고 이때 총 M 개의 채널들 및 N 개의 그러한 콘볼루션 커널들을 갖는 것을 제외하고는, 종래의 콘볼루션 연산과 완전히 동일하다. N 개의 깊이별 콘볼루션 커널들 각각은 N 개의 채널들의 출력 결과들을 획득하기 위해 입력 특징 맵과 콘볼빙한다. 전체 콘볼루션 계산들의 계산량은 1*1*M*N*X*Y이다. 수식으로 표현하면, 특정 출력 포인트(x,y,n)의 값은 다음과 같다:
Figure pat00003
[0040] 모바일넷 콘볼루션 연산은 R*S*M*N*X*Y로부터 R*S*M*X*Y+M*N*X*Y로 종래의 콘볼루션의 계산량을 감소시키는데, 이는 콘볼루션 연산들의 계산량을 상당히 감소시킨다는 것이 확인될 수도 있다. 그에 따라, R*S가 3*3인 경우에, 계산량은 등가의 종래 콘볼루션의 1/9 내지 1/8이라는 것이 확인될 수도 있다.
[0041] 현재, 모바일넷의 모든 기존 구현 솔루션들은 깊이별 콘볼루션 연산들의 중간 출력 결과들을 우선 계산하고, 모든 계산들이 완료될 때까지 이들을 온-칩 SRAM에 연속적으로 저장한 후에, 이들을 포인트별 콘볼루션 연산의 입력 데이터로서 온-칩 SRAM으로부터 판독하고, 계산을 수행할 필요가 있다. 다수의 깊이별 콘볼루션 중간 출력 결과들이 온-칩 랜덤 액세스 메모리에 저장되어야 하므로, 칩 면적 및 비용의 증가를 초래하는 대량의 온-칩 메모리들이 요구되거나, 또는 중간 결과들이 오프-칩 랜덤 액세스 메모리에 저장되는 경우, 제한된 데이터 송신 대역폭에 보다 큰 부담을 주고 시스템의 전력 소비를 증가시킬 것이다.
[0042] 이 기술적 문제에 대해, 모바일넷 네트워크의 특수 콘볼루션 구조체--깊이별 콘볼루션 다음에 뒤따르는 포인트별 콘볼루션을 고려하면, 본 개시내용은, 입력 특징 맵, 깊이별 커널들 및 포인트별 커널들에 따라 깊이별 콘볼루션 계산 및 포인트별 콘볼루션 계산을 수행하여 모든 포인트별 출력 채널들 상의 제1의 미리 결정된 수 p의 포인들의 출력 특징 값들을 획득하고, 상술한 연산을 반복하여 모든 포인트별 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득할 수도 있는, 신경망에서의 콘볼루션 계산을 위한 방법, 장치, 전자 디바이스, 컴퓨터 프로그램 제품 및 컴퓨터 판독가능 저장 매체를 제공한다. 그에 따라, 깊이별 콘볼루션의 중간 출력 결과들을 저장하기 위한 저장 공간이 감소될 수도 있어서, 더 효율적인 콘볼루션 신경망이 실현될 수도 있다.
[0043] 본 기술분야의 통상의 기술자는 본 개시내용의 실시예들에 따른 콘볼루션 계산 방법이 모바일넷 콘볼루션 신경망뿐만 아니라 다른 타입들의 콘볼루션 신경망들에도 적용될 수도 있는데, 이는 이들이 깊이별 콘볼루션 다음에 포인트별 콘볼루션이 뒤따르는 콘볼루션 계산 프로세스를 포함하기만 하면 되고, 그에 따라, 본 개시내용의 실시예들은 콘볼루션 신경망의 타입에 대한 어떠한 제한도 부과하려고 의도되지 않는다는 것을 이해해야 한다.
[0044] 본 개시내용의 기본 원리들을 소개한 후에, 본 개시내용의 다양한 비제한적인 실시예들이 모바일넷을 예로 들고 도면들을 참조하는 것에 의해 구체적으로 설명될 것이다.
예시적인 방법
[0045] 도 3은 본 개시내용의 실시예에 따른 콘볼루션 계산을 위한 방법의 흐름도를 도시한다.
[0046] 도 3에 도시된 바와 같이, 본 개시내용의 실시예에 따른 콘볼루션 계산 방법은 다음의 것을 포함할 수도 있다:
[0047] 단계 S110에서, 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산 및 포인트별 콘볼루션 계산이 수행되어, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득한다.
[0048] 제1의 미리 결정된 수 p는 메모리 내의 가용 공간, 깊이별 콘볼루션 계산 유닛들의 수, 입력 특징 맵의 높이 및 폭 차원, 및 채널 수 차원들 중 적어도 하나에 따라 결정될 수도 있다.
[0049] 예를 들어, 메모리는 보다 빠른 액세스 속도를 달성하고 데이터 송신 대역폭을 점유하는 것을 회피하기 위해 온-칩 랜덤 액세스 메모리(SRAM)일 수도 있다. 그러나, 본 개시내용은 이에 제한되지 않는다. 예를 들어, 메모리는 오프-칩 메모리(DDR)와 같은 다른 메모리들일 수도 있다. 메모리 내의 가용 공간은 깊이별 콘볼루션 연산들의 중간 출력 결과들을 버퍼링하는 데 사용될 수도 있다.
[0050] 예를 들어, 폭 및 높이가 보다 크고(즉, 포인트들이 보다 많고) 현재 콘볼루션 계층의 채널들의 수가 보다 작을(즉, 깊이가 매우 얕을) 때(예를 들어, 현재 계층은 전체 콘볼루션 신경망의 처음 몇몇 계층들에 있다), 제1의 미리 결정된 수 p는 보다 큰 값으로 설정될 수도 있다. 대조적으로, 현재 콘볼루션 계층의 폭 및 높이가 보다 작고(즉, 포인트들이 보다 적고) 채널들의 수가 보다 클(즉, 깊이가 매우 깊을) 때(예를 들어, 현재 계층은 전체 콘볼루션 신경망의 마지막 몇몇 계층들에 있다), 제1의 미리 결정된 수 p는 보다 작은 값으로 설정될 수도 있다.
[0051] 깊이별 콘볼루션이 M 개의 채널들(또는 M 개의 깊이별 콘볼루션 커널들이라고도 또한 지칭됨)을 갖는다고 가정하면, 메모리 내의 가용 공간은 깊이별 콘볼루션 연산들의 중간 출력 결과들을 버퍼링할 필요가 있는데, 즉, p*M 개의 중간 특징 값들이 버퍼링될 필요가 있다. 특징 값들이 양자화되지 않은 데이터일 때, 가용 공간의 용량 C는 p*m*32 비트들 이상이어야 하고, 특징 값들이 8 비트 양자화된 데이터일 때, 가용 공간의 용량 C는 p*m*8 비트들 이상이어야 한다. 그에 따라, 가용 공간의 용량 C가 고정되는 경우에, 양자화가 사용되지 않은 경우, 제1의 미리 결정된 수 p는 C/(M*32)를 취할 수도 있고; 양자화가 사용되는 경우, 제1의 미리 결정된 수 p는 C/(M*8)을 취할 수도 있다는 것이 다른 각도에서 확인될 수도 있다.
[0052] 게다가, 제1의 미리 결정된 수 p는 또한, 승산기-가산기 유닛(multiplier-adder unit)들의 수의 약수일 수도 있는, 깊이별 콘볼루션 계산 유닛들(예를 들어, 승산기-가산기 유닛 MAC)의 수에 의해 제한될 수도 있다.
[0053] 단계 S120에서, 상술한 연산(즉, 단계 S110)이 반복되어 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득한다.
[0054] 예를 들어, 단계 S110이 다시 수행되고, 모든 포인트별 콘볼루션 출력 채널들 상의 다음의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들이 계산되고, 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들이 획득될 때까지 단계 S110이 연속적으로 반복된다.
[0055] 나머지 포인트들의 수가 마지막 계산의 프로세스 동안 p 개의 포인트들의 출력 특징 값들을 생성하기에 충분하지 않은 경우, 그것은 패딩(padding)(예를 들어, 0 이 패딩된다) 방식으로 실현될 수도 있다. 대안적으로, 그것은 작업하는 콘볼루션 계산 유닛들을 감소시키는 것과 같은 다른 방식들로 또한 실현될 수도 있다.
[0056] 기존의 구현 솔루션들에 따르면, 깊이별 콘볼루션 연산들의 모든 중간 출력 결과들이 우선 계산되고 저장된다. 깊이별 콘볼루션 연산들의 중간 출력 결과들로서, 높이 및 폭 차원들에 있어서 총 H 개의 로우들 및 W 개의 컬럼들이 있다고 가정된다. 본 개시내용의 실시예에서, 모바일넷에서 깊이별 콘볼루션 다음에 포인트별 콘볼루션이 뒤따르는 특징에 따르면, 포인트별 콘볼루션 연산들을 계산하기 전에 완료된 모든 H*W 개의 중간 출력 포인트들에 대한 계산을 대기하는 대신에, 단지 p(p는 H*W보다 더 작고, 바람직하게는 H*W보다 훨씬 더 작고, 확실히 p는 또한 H*W와 동일할 수도 있다) 개의 포인트들의 깊이별 콘볼루션 결과들만이 계산된 직후에 포인트별 콘볼루션 연산들이 수행되어, 깊이별 콘볼루션 연산의 중간 출력 결과들에 요구되는 저장 공간은 종래의 콘볼루션 신경망에 요구되는 저장 공간의 p/(H*W)로 감소되는데, 이는 깊이별 콘볼루션 연산들의 중간 출력 결과들을 저장하기 위한 저장 공간을 상당히 감소시킨다. 깊이별 콘볼루션 연산들에 의해 출력된 중간 데이터량이 H*W*M이라고 가정하면, 그 후에 본 개시내용의 실시예에서, 모든 깊이별 콘볼루션 연산들에 의해 출력된 중간 결과들이 계산된 후에 포인트별 콘볼루션 계산들을 위해 일괄적으로 판독될 때까지 불충분한 온-칩 저장 공간으로 인해 깊이별 콘볼루션 결과들을 오프-칩 메모리에 일괄적으로 기입하는 복잡한 프로세스를 회피하기 위해, 단지 p*M(H*W*M보다 훨씬 더 작을 수도 있다)을 갖는 온-칩 저장 리소스 사이즈만이 필요하다. 통계들에 따르면, 온-칩 저장 리소스들이 콘볼루션 출력 결과들의 다음 전체-계층을 저장하기에 충분하지 않지만, 콘볼루션 출력 결과들의 다음 전체-계층의 p/(H*W)가 저장될 수도 있는 경우에, 본 개시내용은 모바일넷 네트워크의 데이터 송신 대역폭을 약 50 %만큼 감소시킨다.
[0057] 이하, 본 개시내용의 실시예들에 따르면 입력 특징 맵에서 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하여 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하는 단계 S110을 다양한 실시예들에서 상세히 설명할 것이다.
[0058] 다양한 실시예들이 각각 설명되었지만, 다양한 실시예들이 또한 가능하다면 전체적으로 또는 부분적으로 함께 조합될 수도 있다는 것에 유의해야 한다.
제1 실시예
[0059] 본 개시내용의 제1 실시예에서, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해, 다음의 연산들이 수행될 수도 있다: (1) 깊이별 콘볼루션 연산들을 수행하여 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 것; (2) 중간 특징 값들에 기초하여 포인트별 콘볼루션 연산들을 수행하여 하나 또는 그 초과의 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 출력 특징 값들을 획득하는 것; (3) 상술한 연산 (2)를 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 출력 특징 값들을 획득하는 것.
[0060] 도 4는 본 개시내용의 제1 실시예에 따른, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 흐름도를 도시한다.
[0061] 도 4에 도시된 바와 같이, 본 개시내용의 제1 실시예에 따르면, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계 S110은 다음의 것을 포함할 수도 있다:
[0062] 단계 S210에서, 입력 특징 맵 및 깊이별 콘볼루션 커널에 따라 깊이별 콘볼루션 계산들이 수행되어 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득한다.
[0063] 현재 콘볼루션 계층에서, 입력 특징 맵 및 깊이별 콘볼루션 커널이 획득되고, 깊이별 콘볼루션 계산들이 수행된다. 입력 특징 맵의 사이즈는 X 개의 로우들 및 Y 개의 컬럼들, 그리고 총 M 개의 채널들이라고 가정된다. 이에 대응하여, M 개의 깊이별 콘볼루션 커널들이 있고, 각각의 깊이별 콘볼루션 커널의 사이즈는 R 개의 로우들 및 S 개의 컬럼들, 그리고 단지 1 개의 채널이다. 깊이별 콘볼루션 계산을 수행할 때, 입력 특징 맵의 제1 채널이 제1 깊이별 콘볼루션 커널과 콘볼빙하여 중간 특징 맵의 제1 채널을 획득하고, 입력 특징 맵의 제2 채널이 제2 깊이별 콘볼루션 커널과 콘볼빙되어 중간 특징 맵의 제2 채널을 획득하는 것 등으로 되어, 중간 특징 값들을 포함하고 H 개의 로우들 및 W 개의 컬럼들 그리고 총 M 개의 채널들을 갖는 중간 특징 맵을 획득한다. 깊이별 콘볼루션 계산의 스트라이드(stride)가 1이고 패딩이 1일 때 H=R이고 W=S이다.
[0064] 제1 실시예에서, 종래 기술과는 달리, 모든 M 개의 깊이별 콘볼루션 출력 채널들 상의 모든 H*W 개의 포인트들의 모든 중간 특징 값들이 직접 계산되는 대신에, 단지 모든 M 개의 채널들 상의 p 개의 포인트들의 중간 특징 값들이 계산된다.
[0065] 단계 S220에서, 포인트별 콘볼루션 커널들 및 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들이 수행되어, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득한다.
[0066] 포인트별 콘볼루션 커널들이 획득되고, 모든 M 개의 채널들 상의 p 개의 포인트들의 중간 특징 값들 상에서 포인트별 콘볼루션 계산들이 수행되어, 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 출력 특징 값들을 획득한다.
[0067] 상기에 설명된 바와 같이, 중간 특징 맵의 사이즈는 H 개의 로우들 및 W 개의 컬럼들, 그리고 총 M 개의 채널들이다. 이에 대응하여, N 개의 포인트별 콘볼루션 커널들이 있는데, 그 각각은 1 개의 로우 및 1 개의 컬럼, 그리고 단지 1 개의 채널을 갖는다. 포인트별 콘볼루션 계산들을 수행할 때, 중간 특징 맵의 모든 채널들이 제1 포인트별 콘볼루션 커널의 모든 채널들과 콘볼루션되어 출력 특징 맵의 제1 채널을 획득하고, 중간 특징 맵의 모든 채널들이 제2 포인트별 콘볼루션 커널의 모든 채널들과 콘볼루션되어 출력 특징 맵의 제2 채널을 획득하는 것 등으로 되어, 출력 특징 값들을 포함하고 E 개의 로우들 및 F 개의 컬럼들, 그리고 총 N 개의 채널들을 갖는 출력 특징 맵을 획득한다. 포인트별 콘볼루션 계산의 스트라이드가 1일 때, E=H이고 F=W이다.
[0068] 우선, 입력 특징 맵 상의 깊이별 콘볼루션 계산을 수행하여 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 단계 S210이 도 5 및 도 6을 참조하여 설명될 것이다.
[0069] 도 5는 본 개시내용의 제1 실시예에 따른, 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 계산하는 단계의 흐름도를 도시한다. 도 6은 본 개시내용의 제1 실시예에 따른, 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 계산하는 단계의 개략도를 도시한다.
[0070] 도 5에 도시된 바와 같이, 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 계산하는 단계 S210은 다음의 것을 포함할 수도 있다:
[0071] 단계 S211에서, 입력 특징 맵 및 깊이별 콘볼루션 커널에 따라 깊이별 콘볼루션 계산들이 수행되어, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득한다.
[0072] 예를 들어, 제2의 미리 결정된 수 m은 제1의 미리 결정된 수 p 및 깊이별 콘볼루션 계산 유닛들의 수에 따라 결정될 수도 있다. 예를 들어, 컴퓨팅적인 효율 고려사항(computational efficiency consideration)들에 기초하여, 하드웨어 회로 내의 깊이별 콘볼루션 계산 유닛들이 전체 용량에서 연산하게 하는 것이 바람직하다. 이 경우에, 제2의 미리 결정된 수 m * 제1의 미리 결정된 수 p = 깊이별 콘볼루션 계산 유닛들의 MAC들의 수이다.
[0073] 깊이별 콘볼루션 계산들을 위해 512 개의 승산기-가산기 유닛들이 있다고 가정하면, 그 후에, 예를 들어, 32 개의 포인트들(p=32), 16 개의 채널들(m=16)의 깊이별 콘볼루션 계산들이 한 번에 동시에 계산될 수도 있다. 상기에 언급된 바와 같이, 다른 고려사항들을 위해 p 및 m의 상이한 값들이 또한 선택될 수도 있다. 예를 들어, 현재 콘볼루션 계층의 폭 및 높이가 비교적 크고 채널들의 수가 비교적 작을 때, p는 보다 큰 값, 예를 들어, 64, 128 등으로 설정될 수도 있고, 이에 대응하여, m은 보다 작은 값, 예를 들어, 8, 4 등으로 설정될 수도 있다. 역으로, 현재 콘볼루션 계층의 폭 및 높이가 보다 작고 채널들의 수가 보다 클 때, p는 보다 작은 값, 예를 들어, 16, 8 등으로 설정될 수도 있고, 이에 대응하여, m은 보다 큰 값, 예를 들어, 32, 64 등으로 설정될 수도 있다.
[0074] 예를 들어, 도 6에 도시된 바와 같이, 중간 특징 맵(1)은 입력 특징 맵(1) 및 깊이별 콘볼루션 커널(1)에 기초하여 우선 계산될 수도 있다. 도 6에서, 입력 특징 맵(1)은 p 개의 포인트들, m 개의 입력 채널들을 갖는 입력 특징 포인트들의 세트이고, 깊이별 콘볼루션 커널(1)은 m 개의 깊이별 콘볼루션 커널들의 세트이다.
[0075] 예에서, 단계 S211은 다음의 것을 포함할 수도 있다:
[0076] 하위 단계 1: 입력 특징 맵의 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들을 판독하는 단계. 예에서, 포인트별 콘볼루션 커널들 및 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들을 수행하는 단계와 동시에, 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들이 입력 특징 맵으로부터 판독된다. 다른 예에서, 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들을 판독하는 상기 하위 단계는, 포인트별 콘볼루션 커널들 및 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들을 수행하는 상기 단계와 동시는 아니다.
[0077] 예를 들어, 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들은 (도 6의 입력 특징 맵에 도시된 바와 같은) 입력 특징 맵으로부터 판독될 수도 있고, 각각의 포인트들의 그룹은 깊이별 콘볼루션 커널에서의 가중 값들의 (도 6의 깊이별 콘볼루션 커널(1)의 섀도우, 즉, R*S에 도시된 바와 같은) 폭 및 높이와 동일한 (도 6의 입력 특징 맵(1)에서의 섀도우에 도시된 바와 같은) 폭 및 높이를 가지며, 2 개의 인접한 포인트들의 그룹들은 깊이별 콘볼루션 계산의 스트라이드와 동일한 판독 스트라이드를 갖는다.
[0078] 판독 스트라이드에 따라, 중첩된 부분은 p 개의 포인트들의 그룹들에서 매 2 개의 인접한 포인트들의 그룹들 사이마다 위치될 수도 있다.
[0079] 예를 들어, 제1 실행에서, 전자의 m 개의 입력 채널들 상의 전자의 p 개의 포인트들의 그룹들의 입력 특징 값들(도 6의 입력 특징 맵(1)에 도시된 입력 특징 값들)은 입력 특징 맵으로부터 판독될 수도 있다.
[0080] 하위 단계 2: 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들에 대응하여, 제2의 미리 결정된 수 m의 입력 채널들 상의 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들의 대응하는 가중 값들을 판독하는 단계. 예에서, 포인트별 콘볼루션 커널들 및 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들을 수행하는 단계와 동시에, 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들 및 대응하는 가중 값들이 입력 특징 맵으로부터 판독된다. 그에 따라, 이 예에 기초하여, 콘볼루션 신경망의 컴퓨팅적인 효율이 개선되고, 더 효율적인 콘볼루션 신경망이 달성된다.
[0081] 예를 들어, 제1 실행에서, 전자의 m 개의 깊이별 콘볼루션 커널들에서의 (도 6에 도시된 깊이별 콘볼루션 커널(1)에서의 가중 값들로서의) 가중 값들은 (도 6에 도시된 M 개의 깊이별 콘볼루션 커널들(1)로서의) 깊이별 콘볼루션 커널들로부터 판독될 수도 있다.
[0082] 하위 단계 3: 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들 상에서 그리고 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 가중 값들 상에서 깊이별 콘볼루션 계산들을 각각 수행하여, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들에 각각 대응하는 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 단계.
[0083] 예를 들어, 중간 특징 맵(1)은 입력 특징 맵(1) 및 깊이별 콘볼루션 커널들(1)에 따라 계산될 수도 있다.
[0084] 예를 들어, 하위 단계 3에서, 다음의 연산들이 제1의 미리 결정된 수 p의 포인트들의 그룹들에서의 각각의 그룹의 포인트들에 대해 수행될 수도 있다: (1) 제2의 미리 결정된 수 m의 입력 채널들 상의 그룹의 포인트들에서의 하나의 포인트의 입력 특징 값들 및 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 하나의 대응하는 가중 값 상에서 승산 계산들을 각각 수행하여, 포인트들의 그룹의 현재 승산 계산 결과들을 획득하는 것; (2) 포인트들의 그룹의 현재 승산 계산 결과들 및 포인트들의 그룹의 이전 시간의 승산 계산 결과들 상에서 누산 계산들을 각각 수행하는 것―이전 시간의 승산 계산 결과들은, 제2의 미리 결정된 수 m의 입력 채널들 상의 그룹의 포인트들에서의 이전의 하나의 포인트의 입력 특징 값들 및 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 대응하는 이전 가중 값 상에서 승산 계산들을 각각 수행하는 것에 의해 획득됨―; 및 (3) 상술한 연산들 (1) 및 (2)를 반복하여, 제2의 미리 결정된 수 m의 입력 채널들 상의 포인트들의 그룹의 다음 포인트의 입력 특징 값들 및 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 대응하는 다음 가중 값 상에서 승산 계산들을 각각 수행하고, 이에 대응하여 제2의 미리 결정된 수 m의 입력 채널들 상의 그룹의 포인트들에서의 모든 포인트들의 입력 특징 값들 상에서 승산 계산들 및 누산 계산들이 완료될 때까지 후속 연산들을 수행하는 것, 그리고 포인트들의 그룹의 최종 누산 계산 결과들은, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 그룹의 포인트들에 대응하는 (도 6의 중간 특징 맵(1)에서의 섀도우에 도시된 바와 같은) 하나의 포인트의 중간 특징 값이다.
[0085] 포인트들의 그룹의 제1 포인트 상에서 승산 계산들을 수행한 후에, 포인트들의 그룹의 이전 시간의 승산 계산 결과들이 존재하지 않거나 또는 0이므로, 그에 따라, 누산을 수행할 필요가 없는데, 다시 말해, 누산 계산 결과들은 그 자체가 승산 계산 결과들이다.
[0086] 도 6에 도시된 바와 같이, 하나의 그룹의 포인트들에는 총 R*S 개의 포인트들이 있는데, 즉, 하위 단계 (3)에서, R*S 개의 승산 계산들 및 대응하는 누산 계산들이 그룹의 포인트들에 대해 수행된다.
[0087] 상술한 계산들을 통해, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들(도 6의 중간 특징 맵(1)에 도시된 중간 특징 값들)이 획득될 수도 있다.
[0088] 예를 들어, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들은 단계 S211 후에 메모리에 저장될 수도 있다. 다시 말해, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득한 후에, 각각의 중간 특징 값이 메모리의 가용 공간에 저장된다.
[0089] 콘볼루션 계층의 현재 설계 파라미터들에 따르면, 각각의 중간 특징 값을 획득한 후이지만 저장하기 전에, 각각의 중간 특징 값에 대해 다음의 연산들: 활성화 연산 및 양자화 연산 중 적어도 하나가 수행될 수도 있다.
[0090] 활성화 함수가 신경망에 부가되지 않은 경우, 그것은 어느 정도 선형 표현(linear expression)으로서 간주될 수도 있고, 최종 표현력이 양호하지 않으며, 일부 비선형 활성화 함수들이 부가되는 경우, 전체 네트워크에 비선형 부분이 도입되고, 네트워크의 표현력이 증가된다. 현재, 인기있는 활성화 함수들은 주로 시그모이드(Sigmoid), Tanh, ReLu, Softmax 등을 포함한다.
[0091] 추가로, 양자화 연산 및 역 양자화 연산이 또한 계산 데이터에 도입될 수도 있다. 예를 들어, 고정밀도 출력 데이터는 시프팅 또는 승산 및 제산(division)에 의해 저정밀도 출력 데이터로 압축될 수도 있어서, 메모리 내의 각각의 데이터에 의해 점유되는 저장 공간이 감소되고 액세스 속도가 완전히 개선된다.
[0092] 예를 들어, 양자화되지 않은 고정밀도 데이터는 32 비트들일 수도 있지만, 양자화된 저정밀도 데이터는 8 비트들일 수도 있어서, 75 % 저장 공간이 절약된다.
[0093] 예를 들어, 임의적인 활성화 연산이 수행될 수도 있고, 그 후에 임의적인 양자화 연산이 수행된다.
[0094] 단계 S212에서, 상술한 연산들(즉, 단계 S211)이 반복되고, 깊이별 콘볼루션 계산들이 입력 특징 맵들 및 깊이별 콘볼루션 커널들에 따라 수행되어, 다음의 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하고, 이에 대응하여 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들이 획득될 때까지 후속 연산들을 수행한다.
[0095] 예를 들어, 다음으로, 도 6에 도시된 바와 같이, 중간 특징 맵(2)은 입력 특징 맵(2) 및 깊이별 콘볼루션 커널(2) 등에 따라 계산될 수도 있고, 중간 특징 맵(z)은 입력 특징 맵(z) 및 깊이별 콘볼루션 커널(z)에 따라 계산될 수도 있다. 예를 들어,
Figure pat00004
이다. 마지막 계산 동안, 나머지 채널들의 수 및 깊이별 콘볼루션 커널들의 수가 m 개의 채널들의 입력 특징 값 및 m 개의 깊이별 콘볼루션 커널들에서의 가중 값들을 판독하기에 충분하지 않은 경우, 그것은 패딩(예를 들어, 0을 패딩함) 방식을 통해 실현될 수도 있다. 대안적으로, 그것은 다른 방식들, 예를 들어, 작업하는 깊이별 콘볼루션 계산 유닛들을 감소시키는 것으로 또한 실현될 수도 있다.
[0096] 최종적으로, 깊이별 콘볼루션 연산의 중간 출력 결과들로서 중간 특징 값들을 포함하는 완전한 중간 특징 맵을 의미하는, 중간 특징 맵(1)에서부터 중간 특징 맵(z)까지의 조합의 경우, 도 6의 중간 특징 맵에 도시된 바와 같이, 중간 특징 맵의 사이즈는 P 개의 포인트들이고 총 M 개의 채널들을 갖는다.
[0097] 다음으로, 도 7 및 도 8을 참조하여 중간 특징 맵 상에서 포인트별 콘볼루션 계산을 수행하여 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하는 단계 S220을 설명할 것이다.
[0098] 도 7은 본 개시내용의 제1 실시예에 따른, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 흐름도를 도시한다. 도 8은 본 개시내용의 제1 실시예에 따른, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 개략도를 도시한다.
[0099] 도 7에 도시된 바와 같이, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계 S220은 다음의 것을 포함할 수도 있다:
[0100] 단계 S221에서, 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 모든 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 포인트별 콘볼루션 계산이 수행되어, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득한다.
[0101] 예를 들어, 제4의 미리 결정된 수 n은 포인트별 콘볼루션 커널들의 총 수 N 이하이다. 게다가, 제4의 미리 결정된 수 n은 또한, 승산기-가산기 유닛들의 수의 약수일 수도 있는, 포인트별 콘볼루션 계산 유닛들(예를 들어, 승산기-가산기 유닛 MAC)의 수에 의해 제한될 수도 있다.
[0102] 예를 들어, 도 8에 도시된 바와 같이, 출력 특징 맵(1)은 중간 특징 맵 및 포인트별 콘볼루션 커널(1)에 기초하여 우선 계산될 수도 있다. 도 8에서, 포인트별 콘볼루션 커널(1)은 n 개의 포인트별 콘볼루션 커널들의 세트이다.
예에서, 단계 S221은 다음의 것을 포함할 수도 있다:
[0103] 예에서, 단계 S221은 다음의 것을 포함할 수도 있다:
[0104] 하위 단계 1: 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들로부터 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 (도 8의 중간 특징 맵(1)에 도시된 중간 특징 값들로서의) 중간 특징 값들을 판독하는 단계.
[0105] 예를 들어, 제3의 미리 결정된 수 m' 및 제4의 미리 설정된 수 n은 제1의 미리 결정된 수 p 및 포인트별 콘볼루션 계산 유닛들의 수에 따라 결정될 수도 있다. 예를 들어, 컴퓨팅적인 효율 고려사항들에 기초하여, 하드웨어 회로 내의 포인트별 콘볼루션 계산 유닛들이 전체 용량에서 연산하게 하는 것이 바람직하다. 이 경우에, 제3의 미리 결정된 수 m' * 제4의 미리 결정된 수 n * 제1의 미리 결정된 수 p * = 포인트별 콘볼루션 계산 유닛 MAC'의 수이다.
[0106] 예를 들어, 상이한 하드웨어 설계들의 경우, 포인트별 콘볼루션 계산 유닛들 MAC'의 수는 깊이별 콘볼루션 계산 유닛 MAC의 수와 동일할 수도 있거나 또는 동일하지 않을 수도 있다. 추가로, 제3의 미리 결정된 수 m'는 제2의 미리 결정된 수 m 이하일 수도 있다.
[0107] 또한 포인트별 콘볼루션 계산을 위해 512 개의 승산기-가산기 유닛들이 있다고 가정하면, 예를 들어, 32 개의 포인트들(p=32), 4 개의 채널들(m'=4), 및 4 개의 콘볼루션 커널들(n=4)의 포인트별 콘볼루션 계산이 한 번에 동시에 계산될 수도 있다. 상기에 언급된 바와 같이, 다른 고려사항들을 위해 m 및 n의 상이한 값들이 또한 선택될 수도 있다. 예를 들어, 현재 콘볼루션 커널들의 수가 비교적 크고 채널들의 수가 비교적 작을 때, p=32가 미변경된 채로 유지되는 경우에, n은 보다 큰 값, 예를 들어, 8, 16 등으로 설정될 수도 있고, 이에 대응하여, m'는 보다 작은 값, 예를 들어, 2, 1 등으로 설정될 수도 있다. 역으로, 현재 콘볼루션 커널들의 수가 비교적 작고 채널들의 수가 비교적 클 때, p=32가 미변경된 채로 유지되는 경우에, n은 보다 작은 값, 예를 들어, 2, 1 등으로 설정될 수도 있고, 이에 대응하여, m'는 보다 작은 값, 예를 들어, 8, 16 등으로 설정될 수도 있다.
[0108] 예를 들어, 제1 실행에서, 전자의 m' 개의 채널들 상의 p 개의 포인트들의 중간 특징 값들은, 도 8의 중간 특징 맵(1)에 도시된 바와 같은, 깊이별 콘볼루션 계산에 의해 획득된 중간 특징 맵으로부터 판독될 수도 있다.
[0109] 하위 단계에서의 판독 연산에서, 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제5 미리 결정된 수 p'의 포인트들의 중간 특징 값들이 또한 판독될 수도 있다는 것에 유의해야 한다. 예를 들어, 제5 미리 결정된 수 p'는 제1의 미리 결정된 수 p 이하이다.
[0110] 하위 단계 2: 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 대응하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들을 판독하는 단계.
[0111] 예를 들어, 제1 실행에서, (도 8의 포인트별 콘볼루션 커널(1)에서의 포인트별 콘볼루션 커널(11)에 의해 도시된 가중 값들과 같은) 전자의 m' 개의 포인트별 콘볼루션 채널들 상의 가중 값들은 (도 8의 포인트별 콘볼루션 커널(1)에 도시된 바와 같은) N 개의 포인트별 콘볼루션 커널들에서의 전자의 n 개의 포인트별 콘볼루션 커널들로부터 판독될 수도 있다.
[0112] 하위 단계 3: 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 포인트별 콘볼루션 계산을 수행하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득하는 단계.
[0113] 예를 들어, 현재 포인트별 콘볼루션 부분 합들(1)은 (도 8의 출력 특징 맵(11)에 도시된 바와 같이) 포인트별 콘볼루션 커널(11) 및 중간 특징 맵(1)에 따라 계산될 수도 있다.
[0114] 예를 들어, 하위 단계 3에서, 다음의 연산들이 제1의 미리 결정된 수 p의 포인트들에서의 각각의 포인트에 대해 수행된다: (1) 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 승산 계산들을 각각 수행하여, 제4의 미리 결정된 수 n의 그룹들의 결과들을 획득하는 것―각각의 그룹의 결과들은 제3의 미리 결정된 수 m'의 승산 계산 결과들을 포함함―; 및 (2) 제4의 미리 결정된 수 n의 그룹들의 결과들에서의 각각의 그룹의 결과들에 대한 제3의 미리 결정된 수 m'의 승산 계산 결과들을 각각 가산하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 이 포인트의 현재 포인트별 콘볼루션 부분 합들을 획득하는 것.
[0115] 도 8에 도시된 바와 같이, 중간 특징 맵(1)에서의 p 개의 포인트들 각각의 경우, 각각의 포인트의 m' 개의 중간 특징 값들 및 포인트별 콘볼루션 커널들(11)의 제1 콘볼루션 커널에서의 m' 개의 가중 값들 상에서 승산 계산들이 각각 수행되고, m' 개의 승산 계산 결과들이 누산되어, 제1 채널 상의 제1 출력 특징 맵(11)에서의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득한다. 상술한 연산들은 포인트별 콘볼루션 커널들(11)의 각각의 콘볼루션 커널에서 수행되어 전자의 n 채널 상의 제1 출력 특징 맵(11)에서의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득한다.
[0116] 하위 단계 4: 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들 및 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 결과들 상에서 누산 계산들을 각각 수행하여, 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 결과들을 생성하는 단계.
[0117] 전자의 n 채널 상의 제1 출력 특징 맵(11)에서의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득한 후에, p 개의 포인트들의 이전 누산 계산 결과들이 존재하지 않거나 또는 0이므로, 그에 따라, 누산을 행할 필요가 없거나, 또는 말하자면, 누산 계산 결과들은 그 자체가 승산 계산 결과들이다.
[0118] 예를 들어, 하위 단계 4 후에, 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 결과들은 메모리에 저장되어 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 결과들을 커버할 수도 있다.
[0119] 하위 단계 5: 상술한 연산들(즉, 하위 단계들 1 내지 4)을 반복하여, 다음의 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 판독하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 다음의 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들을 판독하고, 이에 대응하여 포인트별 콘볼루션 계산들 및 누산 계산들이 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 상에서 완료될 때까지 후속 연산들을 수행하는 단계, 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들은, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들이다.
[0120] 예를 들어, 다음으로, 도 8에 도시된 바와 같이, 출력 특징 맵(12)은 중간 특징 맵(2) 및 포인트별 콘볼루션 커널(12)에 따라 계산될 수도 있고, 누산 계산이 출력 특징 맵(12) 및 출력 특징 맵(11) 등 상에서 수행될 수도 있고, 출력 특징 맵(1z')은 중간 특징 맵(z') 및 포인트별 콘볼루션 커널(1z')에 따라 계산되고, 누산 계산이 출력 특징 맵(1z') 및 출력 특징 맵(1(z'-1)) 상에서 수행된다. 예를 들어,
Figure pat00005
이다. 마지막 계산 동안, 나머지 채널들의 수가 m' 개의 채널들의 중간 특징 값들 및 m' 개의 채널들의 포인트별 콘볼루션 가중 값들을 판독하기에 충분하지 않은 경우, 그것은 패딩(예를 들어, 0을 패딩함) 방식을 통해 실현될 수도 있다. 대안적으로, 그것은 다른 방식들, 예를 들어, 작업하는 포인트별 콘볼루션 계산 유닛들을 감소시키는 것으로 또한 실현될 수도 있다.
[0121] 최종적으로, 출력 특징 맵(1z') 및 출력 특징 맵(1(z'-1))의 누산 결과들은, 도 8의 출력 특징 맵(1)에 도시된 바와 같이, n 개의 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 출력 특징 값들로서 이루어지고, 출력 특징 맵(1)의 사이즈는 p 개의 포인트들이고, 총 N 개의 채널들을 갖는다.
[0122] 예를 들어, 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들이 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들로서 온-칩 메모리에 저장되기 전에 각각의 출력 특징 값 상에서 활성화 연산 및 양자화 연산 중 적어도 하나가 수행될 수도 있다.
[0123] 단계 S222에서, 상술한 연산들(즉, 단계 S211)이 반복되고, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들이 획득될 때까지, 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 모든 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 포인트별 콘볼루션 계산들이 수행된다.
[0124] 예를 들어, 다음으로, 도 8에 도시된 바와 같이, 출력 특징 맵(2)은 중간 특징 맵 및 포인트별 콘볼루션 커널(2) 등에 따라 계산될 수도 있고, 출력 특징 맵(g)은 중간 특징 맵 및 포인트별 콘볼루션 커널(g)에 따라 계산될 수도 있다. 예를 들어,
Figure pat00006
이다. 마지막 계산 동안, 나머지 포인트별 콘볼루션 커널들의 수가 n 개의 포인트별 콘볼루션 커널들에서의 가중 값들을 판독하기에 충분하지 않은 경우, 그것은 또한 패딩(예를 들어, 0을 패딩함) 방식을 통해 실현될 수도 있다. 대안적으로, 그것은 다른 방식들, 예를 들어, 작업하는 포인트별 콘볼루션 계산 유닛들을 감소시키는 것으로 또한 실현될 수도 있다.
[0125] 최종적으로, 도 8의 출력 특징도에 도시된 바와 같이, 포인트별 콘볼루션 연산의 최종 출력 결과로서 출력 특징 값들을 포함하는 완전한 출력 특징 맵을 의미하는, 출력 특징 맵(1)에서부터 출력 특징 맵(g)까지의 조합의 경우, 출력 특징 맵의 사이즈는 p 개의 포인트들이고 총 N 개의 채널들을 갖는다.
[0126] 상기에 설명된 바와 같이, 출력 특징 맵은 임의적인 활성화 연산 및 임의적인 양자화 연산을 수행할 수도 있다.
[0127] 이하, 본 개시내용의 제1 실시예에 따른 콘볼루션 계산을 위한 방법이 구체적인 예에서 설명될 것이다.
[0128] 예를 들어, 도 6 및 도 8에 도시된 바와 같이, 깊이별 콘볼루션의 폭 및 높이 차원들이 S*R이고, 채널들의 수(또는 채널 수가 1인 것으로 간주될 때 번호로서 또한 보여질 수도 있다)는 M이고; 깊이별 콘볼루션의 폭 및 높이 차원들이 1*1이고, 채널들의 수는 M이고, 번호는 N이고; 입력 특징 맵의 폭 및 높이 차원들이 X*Y이고, 중간 특징 맵의 폭 및 높이 차원들이 W*H이고, 출력 특징 맵의 폭 및 높이 차원들이 E*F라고 가정하면, 콘볼루션 계산 방법은 다음의 단계들을 포함할 수도 있다:
[0129] 1. 깊이별 콘볼루션의 경우, p(p<=H*W) 개의 포인트들 및 m(m<=M) 개의 채널들의 승산 및 누산 결과들을 우선 계산하는 단계, 여기서의 누산은, 도 6에 도시된 R 및 S와 같은, 콘볼루션 커널들의 길이 및 폭의 방향으로 수행되는 누산이고, 여기서 p*m 개의 승산-누산(MAC) 유닛들이 공유되고, p*m 개의 승산-누산 결과들이 획득된다.
[0130] 도 9는 본 개시내용의 실시예에 따른 깊이별 콘볼루션 계산의 개략도를 도시한다.
[0131] 도 9에 도시된 바와 같이, 512 개의 승산기-가산기 유닛들(MAC)이 있다고 가정되고, 32 개의 포인트들(상기에 언급된 p=32), 16 개의 채널들(상기에 언급된 m=16, 즉, 채널 변수 c는 0 내지 15의 범위로부터의 값을 취한다)이 한 번에 동시에 계산된다. 콘볼루션 커널의 사이즈가 3*3이라고 가정하면, 그 후에, 9 회의 승산 및 누산 계산들(Mult 및 Accu) 후에(깊이별 콘볼루션 커널의 높이 및 폭 변수들 r 및 s가 각각 0으로부터 2로 변경되고, 입력 특징 맵의 폭 변수 x가 0 내지 31로부터 2 내지 33으로 변경되고, 높이 변수 y가 0으로부터 2로 변경된다), 32 개의 포인트들, 16 개의 채널들의 출력 값들이 획득될 것이다. 총 128 개의 채널들이 있다고 가정하면, (128/16)*9=72 회의 계산들 후에, 32 개의 포인트들, 128 개의 채널들의 출력 데이터가 획득될 것이다.
[0132] 2. 상기에 언급된 단계 1의 결과들 상에서 임의적인 활성화 연산을 수행하는 단계, 활성화 연산은 수치를 비선형 함수와 재매핑시키는 것을 지칭하고, 활성화 함수들은 ReLu 함수, 시그모이드 함수, 아크탄젠트(tan) 함수 등을 포함하지만 이들로 제한되지 않는다.
[0133] 3. 상기에 언급된 단계 2에 의해 획득된 결과들 상에서 임의적인 양자화 연산을 수행하는 단계, 양자화 연산은 고정밀도 승산 및 누산 결과들(통상적으로 32 비트)을 시프팅 또는 승산 및 제산하는 것에 의해 저정밀도 승산 및 누산 결과들(통상적으로 8 비트)을 획득하는 것을 지칭한다.
[0134] 4. 상기에 언급된 단계 3의 결과들을 레지스터 또는 온-칩 SRAM에 저장하는 단계.
[0135] 5.
Figure pat00007
회의 순환을 통해, M 개의 채널들 상의 p 개의 포인트들의 깊이별 콘볼루션 결과들을 계산한 후에 p*M 개의 값들을 획득하는 단계, p*M 값들에는 활성화 함수 연산 및 양자화 연산이 수행되거나 또는 수행되지 않는다. 완전한 출력 결과들의 계층의 포인트들의 수는 p보다 훨씬 더 크므로, 총 H*W 개의 포인트들이 있다고 가정하면, 여기에 사용된 저장 공간은 깊이별 연산 결과들의 완전한 계층을 계산하기 위한 단지 p/(H*W)뿐이다.
[0136] 6. 상기에 언급된 단계 5의 결과들 상에서 포인트별 계산들을 직접 수행하는 단계. 구체적인 프로세스는 다음과 같다:
[0137] a). 레지스터 또는 온-칩 SRAM으로부터 p 개의 포인트들, m 개의 채널들의 깊이별 콘볼루션 계산의 결과들을 판독하고, p 개의 포인트들, m 개의 채널들의 승산 및 누산 결과들을 계산하여―여기서의 누산은 채널 방향의 누산임―, p 개의 포인트들, 1 개의 출력 채널의 포인트별 콘볼루션 부분 합들(첫 번째 내지 m 번째 입력 채널들의 부분 합들)을 획득하는 단계.
[0138] b).
Figure pat00008
회의 순환을 통해 p 개의 포인트들의 포인트별 콘볼루션 결과들 상의 계산 후에 p 개의 포인트들의 최종 승산 및 누산 결과들을 획득하는 단계.
[0139] c). 상술한 결과들 상에서 임의적인 활성화 연산을 수행하는 단계, 활성화 연산은 수치를 비선형 함수와 재매핑시키는 것을 지칭하고, 활성화 함수들은 ReLu 함수, 시그모이드 함수, 아크탄젠트(tan) 함수 등을 포함하지만 이들로 제한되지 않는다.
[0140] d). 상술한 결과들 상에서 임의적인 양자화 연산을 수행하고―양자화 연산은 고정밀도 승산 및 누산 결과들(통상적으로 32 비트)을 시프팅 또는 승산 및 제산하는 것에 의해 저정밀도 승산 및 누산 결과들(통상적으로 8 비트)을 획득하는 것을 지칭함―, 결과들을 레지스터 또는 온-칩 SRAM 또는 오프-칩 DDR에 저장하는 단계.
[0141] e). 포인트별 콘볼루션을 위해 총 N 개의 콘볼루션 커널들이 있다고 가정하여, 상술한 연산들 a), b), c), d)의 N 순환을 통해 N 개의 채널들 상의 p 개의 포인트들의 계산 결과들의 출력을 완료하는 단계.
[0142] 도 10은 본 개시내용의 실시예에 따른 포인트별 콘볼루션 계산의 개략도를 도시한다.
[0143] 도 10에 도시된 바와 같이, 포인트별 콘볼루션의 콘볼루션 커널의 사이즈는 1*1이고, 512 개의 승산기-가산기 유닛들(여기서의 512 개의 승산기-가산기 유닛들 및 깊이별 계산 프로세스의 512 개의 승산기-가산기 유닛들은, 512 개의 승산기-가산기 유닛들과 동일할 수도 있거나, 또는 상이할 수도 있다)이 있다고 또한 가정되고, 32 개의 포인트들(상기에 언급된 p=32), 16 개의 채널들(상기에 언급된 m=16, 즉, 채널 변수 c는 0 내지 15의 범위로부터의 값을 취한다), 및 1 개의 콘볼루션 커널에 대한 콘볼루션이 매 회 계산되고, 32 개의 포인트들, 1 개의 출력 채널에 대한 누산 합들의 데이터의 일부가 획득된다. 총 128 개의 채널들이 있다고 가정하면, 128/16=8 회의 계산들 후에(채널 변수 c가 0 내지 15로부터 112 내지 127로 변경된다), 32 개의 포인트들 및 1 개의 출력 채널의 누산 합들의 데이터가 획득된다. 그리고 256 개의 콘볼루션 커널들이 있다고 가정하면, 그 후에 256*(128/16)=2048 회의 계산들 후에, 32 개의 포인트들 및 256 개의 출력 채널들의 누산 합들의 데이터가 획득된다. 즉, 32 개의 포인트들의 출력 특징 값이 획득된다.
[0144] 7. 완전한 출력 특징 맵이 획득될 때까지 다음의 p 개의 포인트들을 연속적으로 계산하는 것에 의해 단계들 1 내지 6의 상술한 연산들을 반복하는 단계.
제2 실시예
[0145] 본 개시내용의 제2 실시예에서, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해, 다음의 연산들이 수행될 수도 있다: 1) 깊이별 콘볼루션 연산들을 수행하여 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 것; (2) 중간 특징 값들에 따라 포인트별 콘볼루션 연산들을 수행하여 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들에 대한 현재 포인트별 콘볼루션 부분 합들을 획득하는 것; (3) 현재 포인트별 콘볼루션 부분 합들 및 이전 누산 계산 결과들 상에서 누산을 수행하여, 현재 누산 계산 결과들을 생성하는 것; (4) 상술한 연산들 (2) 및 (3)을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 출력 특징 값들을 획득하는 것.
[0146] 즉, 제2 실시예에서 깊이별 콘볼루션 연산을 수행하는 것(단계 S210)은, 제1 실시예에서 깊이별 콘볼루션 연산을 수행하는 것과 동일하고, 제2 실시예에서 포인트별 콘볼루션 연산을 수행하는 것(단계 S220)은, 제1 실시예에서 포인트별 콘볼루션 연산을 수행하는 것과는 상이하다. 그에 따라, 다음으로, 2 개의 실시예들 사이의 차이들이 강조되어 설명될 것이다.
[0147] 도 11은 본 개시내용의 제2 실시예에 따른, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 흐름도를 도시한다. 도 12는 본 개시내용의 제2 실시예에 따른, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 개략도를 도시한다.
[0148] 도 11에 도시된 바와 같이, 중간 특징 값들 및 포인트별 콘볼루션 커널들에 따라 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계 S220은 다음의 것을 포함할 수도 있다:
[0149] 단계 S223에서, 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 모든 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 포인트별 콘볼루션 계산들을 수행하여, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득함.
[0149] 예를 들어, 제3의 미리 결정된 수 m'는 제2의 미리 결정된 수 m 이하이다. 게다가, 제3의 미리 결정된 수 m'는 또한, 승산기-가산기 유닛들의 수의 약수일 수도 있는, 포인트별 콘볼루션 계산 유닛들(예를 들어, 승산기-가산기 유닛 MAC)의 수에 의해 제한될 수도 있다.
[0151] 예에서, 단계 S223은 다음의 것을 포함할 수도 있다:
[0152] 하위 단계 1: 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들에 따라 포인트별 콘볼루션 계산들을 수행하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득하는 단계.
[0153] 예를 들어, 하위 단계 1에서, 다음의 단계들이 수행될 수도 있다:
[0154] (1) 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들로부터 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 판독하는 단계.
[0155] 예를 들어, 제1 실행에서, 전자의 m' 개의 채널들 상의 p 개의 포인트들의 중간 특징 값들은, 도 12의 중간 특징 맵(1)에 도시된 바와 같은, 깊이별 콘볼루션 계산들에 의해 획득된 중간 특징 맵으로부터 판독될 수도 있다.
[0156] (2) 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 입력 특징 값들에 대응하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들을 판독하는 단계.
[0157] 예를 들어, 제1 실행에서, (도 12의 포인트별 콘볼루션 커널(1)의 포인트별 콘볼루션 커널(11)에 의해 도시된 가중 값들과 같은) 전자의 m' 개의 포인트별 콘볼루션 채널들 상의 가중 값들은 (도 12의 포인트별 콘볼루션 커널(1)에 도시된 바와 같은) N 개의 포인트별 콘볼루션 커널들에서의 전자의 n 개의 포인트별 콘볼루션 커널들로부터 판독될 수도 있다.
[0158] (3) 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 포인트별 콘볼루션 계산들을 수행하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득하는 단계.
[0159] 예를 들어, 현재 포인트별 콘볼루션 부분 합들(11)은 (도 12의 출력 특징 맵(11)에 도시된 바와 같이) 포인트별 콘볼루션 커널(11) 및 중간 특징 맵(1)에 기초하여 계산될 수도 있다.
[0160] 이 단계는 제1 실시예에서의 단계 S221의 하위 단계 3과 동일하고, 그에 따라, 그 상세한 설명은 생략될 것이다.
[0161] 하위 단계 2: 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들이 획득될 때까지, 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 포인트별 콘볼루션 계산들을 수행하여, 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득하는 것에 의해 상술한 연산들을 반복하는 단계.
[0162] 예를 들어, 다음으로, 도 12에 도시된 바와 같이, 현재 포인트별 콘볼루션 부분 합들(21)은 (도 12의 출력 특징 맵(21)에 도시된 바와 같이) 포인트별 콘볼루션 커널(21) 및 중간 특징 맵(1) 등에 따라 계산될 수도 있고, 현재 포인트별 콘볼루션 부분 합들(g1)은 (도 12의 출력 특징 맵(g1)에 도시된 바와 같이) 포인트별 콘볼루션 커널(g1) 및 중간 특징 맵(1)에 따라 계산된다.
[0163] 최종적으로, 현재 포인트별 콘볼루션 부분 합들(11) 내지 현재 포인트별 콘볼루션 부분 합들(g1)이 결합되는데, 이는 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 모든 포인트별 콘볼루션 출력 채널들(1) 상의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 의미하고, 그 사이즈는 p 개의 포인트들이고 총 N 개의 채널들을 갖는다.
[0164] 단계 S224에서, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들 및 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 결과들 상에서 누산 계산들이 각각 수행되어, 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 결과들을 생성한다.
[0165] 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들(1)을 획득한 후에, 이전 누산 계산 결과들이 존재하지 않거나 또는 0이므로, 그에 따라, 누산을 수행할 필요가 없거나, 또는 말하자면, 현재 포인트별 콘볼루션 부분 합들(1)은 현재 누산 계산 결과들이다.
[0166] 단계 S224 후에, 현재 누산 계산 결과들은 메모리에 저장되어 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 결과들을 커버한다.
[0167] 단계 S225에서, 상술한 연산들(즉, 단계 S223 및 단계 S224)이 반복되고, 다음의 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 모든 포인트별 콘볼루션 커널들에서의 대응하는 다음의 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 포인트별 콘볼루션 계산들이 수행되고, 이에 대응하여 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 모든 중간 특징 값들 상에서 포인트별 콘볼루션 계산들 및 누산 계산들이 완료될 때까지 후속 연산들이 수행되고, 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들은, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들이다.
[0168] 예를 들어, 다음으로, 도 12에 도시된 바와 같이, 현재 포인트별 콘볼루션 부분 합들(12)은 중간 특징 맵(2) 및 포인트별 콘볼루션 커널(12)에 따라 계산될 수도 있고, 현재 포인트별 콘볼루션 부분 합들(22)은 중간 특징 맵(2) 및 포인트별 콘볼루션 커널(22)에 따라 계산될 수도 있는 것 등으로 되고, 현재 포인트별 콘볼루션 부분 합들(g2)은 중간 특징 맵(2) 및 포인트별 콘볼루션 커널(g2)에 따라 계산된다.
[0169] 현재 포인트별 콘볼루션 부분 합들(12) 내지 현재 포인트별 콘볼루션 부분 합들(g2)이 함께 결합되어 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들(2)을 획득하고, 그 사이즈는 p 개의 포인트들이고 총 N 개의 채널들을 갖는다.
[0170] 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들(2)을 획득한 후에, 현재 포인트별 콘볼루션 부분 합들(2)은 이전 누산 계산 결과들(즉, 현재 포인트별 콘볼루션 부분 합들(1))과 누산된다.
[0171] 그리고 계속, 현재 포인트별 콘볼루션 부분 합들(1z') 내지 현재 포인트별 콘볼루션 부분 합들(gz')이 함께 결합되어 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들(z')을 획득하고, 그 사이즈는 p 개의 포인트들이고 총 N 개의 채널들을 갖는다.
[0172] 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들(z')을 획득한 후에, 현재 포인트별 콘볼루션 부분 합들(z')은 이전 누산 계산 결과들(즉, 현재 포인트별 콘볼루션 부분 합들(1) 내지 현재 포인트별 콘볼루션 부분 합들(z'-1))과 누산되어, 도 8의 출력 특징도에 도시된 바와 같이, 포인트별 콘볼루션 연산의 최종 출력 결과들로서 출력 특징 값들을 포함하는 출력 특징 맵이 획득되고, 그 사이즈는 p 개의 포인트들이고 총 N 개의 채널들을 갖는다.
[0173] 예를 들어, 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들이 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들로서 메모리에 저장되기 전에 각각의 출력 특징 값 상에서 활성화 연산 및 양자화 연산 중 적어도 하나가 수행될 수도 있다.
제3 실시예
[0174] 본 개시내용의 제3 실시예에서, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해, 다음의 연산들이 수행될 수도 있다: (1) 깊이별 콘볼루션 연산들을 수행하여 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 것; (2) 중간 특징 값들에 따라 포인트별 콘볼루션 연산들을 수행하여 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득하는 것; (3) 현재 포인트별 콘볼루션 부분 합들 및 이전 누산 계산 결과들 상에서 누산을 수행하여, 현재 누산 계산 결과들을 생성하는 것; (4) 상술한 연산들 (1) 및 (3)을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 출력 특징 값들을 획득하는 것.
[0175] 도 13은 본 개시내용의 제3 실시예에 따른, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계의 흐름도를 도시한다. 도 14는 본 개시내용의 제3 실시예에 따른, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들(
Figure pat00009
)을 계산하는 단계의 개략도를 도시한다.
[0176] 도 13에 도시된 바와 같이, 본 개시내용의 제3 실시예에 따르면, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 계산하는 단계 S110은 다음의 것을 포함할 수도 있다:
[0177] 단계 S310에서, 입력 특징 맵 및 깊이별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산들이 수행되어, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득한다.
[0178] 예를 들어, 제2의 미리 결정된 수 m은 제1의 미리 결정된 수 p 및 깊이별 콘볼루션 계산 유닛들의 수에 따라 결정된다.
[0179] 예에서, 단계 S310은 다음의 것을 포함할 수도 있다:
[0180] 하위 단계 1: 입력 특징 맵으로부터 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들을 판독하는 단계.
[0181] 하위 단계 2: 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들에 대응하여 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 가중 값들을 판독하는 단계.
[0182] 하위 단계 3: 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들 및 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 가중 값들 상에서 깊이별 콘볼루션 계산들을 각각 수행하여, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들에 각각 대응하는 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 단계.
[0183] 이 단계 S310에서의 하위 단계들 1 내지 3은 제1 실시예에서의 단계 S211의 하위 단계들 1 내지 3과 동일하고, 그에 따라, 그 상세한 설명은 생략될 것이다.
[0184] 예를 들어, 제1 실행에서, 우선, 전자의 m 개의 입력 채널들 상의 전자의 p 개의 포인트들의 그룹의 입력 특징 값들은 (도 14의 입력 특징 맵(i=1)에 도시된 입력 특징 값들로서) 입력 특징 맵으로부터 판독될 수도 있다. 그 후에, 전자의 m 개의 깊이별 콘볼루션 커널들에서의 (도 6의 깊이별 콘볼루션 커널(1)에 도시된 가중 값들로서의) 가중 값들은 (도 6의 M 개의 깊이별 콘볼루션 커널들로 도시된 바와 같은) 깊이별 콘볼루션 커널들로부터 판독될 수도 있다. 최종적으로, 중간 특징 맵(i=1)은 입력 특징 맵(1) 및 깊이별 콘볼루션 커널(1)에 따라 계산될 수도 있다.
[0185] 예를 들어, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들은 하위 단계 3 후에 메모리에 저장될 수도 있다. 다시 말해, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득한 후에, 각각의 중간 특징 값이 메모리의 가용 공간에 저장된다.
[0186] 추가로, 콘볼루션 계층의 현재 설계 파라미터들에 따르면, 각각의 중간 특징 값이 획득된 후에 그리고 그것이 저장되기 전에, 각각의 중간 특징 값에 대해 다음의 연산들: 활성화 연산 및 양자화 연산 중 적어도 하나가 수행될 수도 있다.
[0187] 단계 S320에서, 포인트별 콘볼루션 커널들 및 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들이 수행되어, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득한다.
[0188] 예에서, 단계 S320은 다음의 것을 포함할 수도 있다:
[0189] 하위 단계 1: 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 모든 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 포인트별 콘볼루션 계산들을 수행하여, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합(current pointwise convolution sub-partial sum)들을 획득하는 단계.
[0190] 예를 들어, 하위 단계 1에서, 다음의 단계들이 수행될 수도 있다: (1) 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들에 따라 포인트별 콘볼루션 계산들을 수행하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 단계.
[0192] 예를 들어, 제3의 미리 결정된 수 m' 및 제4의 미리 결정된 수 n은 제1의 미리 결정된 수 p 및 포인트별 콘볼루션 계산 유닛들의 수에 따라 결정될 수도 있다.
[0193] 예를 들어, 연산 (1)은 다음의 것을 포함할 수도 있다: (1-1) 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들로부터 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 판독하는 것; (1-2) 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 대응하여 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들을 판독하는 것; (1-3) 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 포인트별 콘볼루션 계산들을 각각 수행하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 것.
[0194] 구체적으로는, (1-3)에서, 다음의 연산들이 제1의 미리 결정된 수 p의 포인트들 각각에 대해 수행될 수도 있다: 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 포인트의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 각각 상에서 승산 계산들을 수행하여, 제4의 미리 결정된 수 n의 그룹들의 결과들을 획득하는 것―그 각각의 그룹은 제3의 미리 결정된 수 m'의 승산 계산 결과들을 포함함―; 및 제4의 미리 결정된 수 n의 그룹들의 결과들의 각각의 그룹의 결과들에서의 제3의 미리 결정된 수 m'의 승산 계산 결과들을 각각 가산하여, 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 이 포인트에 대한 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 것.
[0195] (2) 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들이 획득될 때까지, 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 포인트별 콘볼루션 계산들을 수행하여, 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 것에 의해 상술한 연산들을 반복하는 단계.
[0196] 하위 단계 2: 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들 및 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 하위-결과들 상에서 누산 계산들을 각각 수행하여, 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 하위-결과들을 생성하는 단계.
[0197] 예를 들어, 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 하위-결과들을 생성한 후에, 현재 누산 계산 하위-결과들은 메모리에 저장되어 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 하위-결과들을 커버할 수도 있다.
[0198] 하위 단계 3: 다음의 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 모든 포인트별 콘볼루션 커널들에서의 대응하는 다음의 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 포인트별 콘볼루션 계산들을 수행하는 것, 그리고 이에 대응하여 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 모든 중간 특징 값들 상에서 포인트별 콘볼루션 계산들 및 누산 계산들이 완료될 때까지 후속 연산을 수행하는 것에 의해 상술한 연산들을 반복하는 단계, 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 하위-결과들은, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들이다.
[0199] 단계 S320의 하위 단계들 1 내지 3은 제2 실시예에서의 단계 S220의 단계들 S223 내지 S225와 실질적으로 유사하고, 따라서 그 상세한 설명은 생략된다.
[0200] 예를 들어, 제1 실행에서, 우선, 전자의 m' 개의 깊이별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 중간 특징 값들은 깊이별 콘볼루션 계산들에 의해 획득된 중간 특징 맵으로부터 판독될 수도 있다. 그 후에, 전자의 m' 개의 포인트별 콘볼루션 채널들 상의 가중 값들은 N 개의 포인트별 콘볼루션 커널들에서의 전자의 n 개의 포인트별 콘볼루션 커널들로부터 판독될 수도 있다. 다음으로, 전자의 n 개의 포인트별 콘볼루션 출력 채널들 상의 포인트별 콘볼루션 하위-부분 합들은 이들 양측 모두에 따라 계산될 수도 있다. 그 후에, N 개의 포인트별 콘볼루션 출력 채널들 상의 포인트별 콘볼루션 하위-부분 합들이 획득될 때까지, 후자의 n 개의 포인트별 콘볼루션 출력 채널들 상의 포인트별 콘볼루션 하위-부분 합들이 계산된다. 다음으로, 하위-부분 합들이 누산되고, 후자의 m' 개의 채널들의 p 개의 포인트들의 중간 특징 값들이 판독되고, 상술한 연산들이 반복되어 모든 포인트별 콘볼루션 출력 채널들 상의 p 개의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득한다.
[0201] 본 명세서에서 설명되는 것은 포인트별 콘볼루션 커널들의 수의 차원(n) 상에서 반복이 우선 수행된 후에 채널들의 수의 차원(m) 상에서 반복이 수행된다는 것이지만, 본 개시내용의 실시예들은 이에 제한되지 않는다는 것에 유의해야 한다. 예를 들어, 반복은 또한 채널들의 수의 차원(m) 상에서 수행될 수도 있고, 그 후에 반복은 포인트별 콘볼루션 커널들의 수의 차원(n) 상에서 수행된다.
[0202] 단순한 경우에, m'=m인 경우, 그러면 제1 실행에서, 우선, 도 14의 중간 특징 맵(i=1)에 도시된 바와 같이, 처음 m 개의 채널들 상의 p 개의 포인트들의 중간 특징 값들이 판독될 수도 있다. 그 후에, 도 14의 포인트별 콘볼루션 커널(i=1)에 도시된 바와 같이, N 개의 포인트별 콘볼루션 커널들에서의 전자의 m 개의 포인트별 콘볼루션 채널들 상의 가중 값들이 판독될 수도 있다. 다음으로, 도 14의 출력 특징 맵(i=1)에 도시된 바와 같이, 현재 포인트별 콘볼루션 부분 합들이 이들 양측 모두에 따라 계산될 수도 있다.
[0203] 단계 S330에서, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들 및 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 결과들 상에서 누산 계산들이 각각 수행되어, 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 결과들을 생성한다.
[0204] 예를 들어, 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 하위-결과들을 생성한 후에, 현재 누산 계산 결과들은 메모리에 저장되어 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 결과들을 커버한다.
[0205] 단계 S340에서, 상술한 연산들이 반복되고, 포인트별 콘볼루션 채널들 및 다음의 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 포인트별 콘볼루션 계산들이 수행되고, 이에 대응하여 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 모든 중간 특징 값들 상에서 포인트별 콘볼루션 계산들 및 누산 계산들이 완료될 때까지 후속 연산들이 수행되고, 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들은, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들이다.
[0206] 예를 들어, 다음으로, 입력 특징 맵(i=2) 및 깊이별 콘볼루션 커널(i=2)에 따라 중간 특징 맵(i=2)이 계산될 수도 있고, 그 후에, 현재 포인트별 콘볼루션 부분 합들은, 도 14의 출력 특징 맵(i=2)에 도시된 바와 같이, 중간 특징 맵(i=2) 및 포인트별 콘볼루션 커널(i=2)에 따라 계산될 수도 있고, 다음으로, 출력 특징 맵(i=2)은 이전 누산 계산 결과들(즉, 도 14의 출력 특징 맵(i=1))과 누산되어 현재 누산 계산 결과들을 생성한다. 유사한 방식으로, 중간 특징 맵(i=z)은 입력 특징 맵(i=z) 및 깊이별 콘볼루션 커널들(i=z)에 따라 계산될 수도 있고, 그 후에, 현재 포인트별 콘볼루션 부분 합들은 도 14의 출력 특징 맵(i=z)에 도시된 바와 같이 포인트별 콘볼루션 커널들(i=z) 및 중간 특징 맵(i=z)에 따라 계산될 수도 있고, 다음으로, 출력 특징 맵(i=z)은 이전 누산 계산 결과들(즉, 현재 포인트별 콘볼루션 부분 합들(1) 내지 현재 포인트별 콘볼루션 부분 합들(z'-1))과 누산되어, 도 8의 출력 특징도에 도시된 바와 같이, 포인트별 콘볼루션 연산의 최종 출력 결과들로서 출력 특징 값들을 포함하는 출력 특징 맵이 획득되고,그 사이즈는 p 개의 포인트들이고 총 N 개의 채널들을 갖는다.
[0207] 예를 들어, 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들이 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값으로서 메모리에 저장되기 전에 각각의 출력 특징 값 상에서 활성화 연산 및 양자화 연산 중 적어도 하나가 수행될 수도 있다.
[0208] 이하, 본 개시내용의 제1 실시예에 따른 콘볼루션 계산 방법이 구체적인 예에서 설명될 것이다.
[0209] 예를 들어, 도 14에 도시된 바와 같이, 깊이별 콘볼루션의 폭 및 높이 차원들이 S*R이고, 채널들의 수(또는 채널 수가 1인 것으로 간주될 때 번호로서 또한 간주될 수도 있다)는 M이고, 깊이별 콘볼루션의 폭 및 높이 차원들이 1*1이고, 채널들의 수는 M이고, 번호는 N이고, 입력 특징 맵의 폭 및 높이 차원들이 X*Y이고, 중간 특징 맵의 폭 및 높이 차원들이 W*H이고, 출력 특징 맵의 폭 및 높이 차원들이 E*F라고 가정하면, 그 후에 콘볼루션 계산 방법은 다음의 단계들을 포함할 수도 있다:
[0210] 1. 깊이별 콘볼루션의 경우, 우선, p(p<=H*W) 개의 포인트들 및 m(m<=M) 개의 채널들의 승산 및 누산 결과들을 계산하는 단계, 여기서의 누산은, 도 6에 도시된 R 및 S와 같은, 콘볼루션 커널들의 길이 및 폭의 방향으로 수행되는 누산이고, 여기서 p*m 개의 승산-누산(MAC) 유닛들이 공유되고, p*m 개의 승산-누산 결과들이 획득된다.
[0211] 도 9에 도시된 바와 같이, 512 개의 승산기-가산기 유닛(MAC)들이 있다고 가정되고, 32 개의 포인트들(상기에 언급된 p=32), 16 개의 채널들(상기에 언급된 m=16, 즉, 채널 변수 c는 0 내지 15의 범위로부터의 값을 취한다)이 한 번에 동시에 계산된다. 콘볼루션 커널의 사이즈가 3*3이라고 가정하면, 그 후에, 9 회의 승산 및 누산 계산들(Mult 및 Accu) 후에(깊이별 콘볼루션 커널의 높이 및 폭 변수들 r 및 s가 각각 0으로부터 2로 변경되고, 입력 특징 맵의 폭 변수 x가 0 내지 31로부터 2 내지 33으로 변경되고, 높이 변수 y가 0으로부터 2로 변경된다), 32 개의 포인트들, 16 개의 채널들의 출력 값들이 획득될 것이다.
[0212] 2. 상기에 언급된 단계 1의 결과들 상에서 임의적인 활성화 연산을 수행하는 단계, 활성화 연산은 수치를 비선형 함수와 재매핑시키는 것을 지칭하고, 활성화 함수들은 ReLu 함수, 시그모이드 함수, 아크탄젠트(tan) 함수 등을 포함하지만 이들로 제한되지 않는다.
[0213] 3. 상기에 언급된 단계 2의 결과들 상에서 임의적인 양자화 연산을 수행하는 단계, 양자화 연산은 고정밀도를 갖는 승산 및 누산 결과들(통상적으로 32 비트)을 시프팅 또는 승산 및 제산하는 것에 의해 저정밀도를 갖는 승산 및 누산 결과들(통상적으로 8 비트)을 획득하는 것을 지칭한다.
[0214] 4. 상기에 언급된 단계 3의 결과들을 레지스터 또는 온-칩 SRAM에 저장하는 단계.
[0215] 5. 상기에 언급된 단계 4의 결과들에 대한 포인트별 계산들을 직접 수행하여, 레지스터 또는 온-칩 SRAM으로부터 p 개의 포인트들, m 개의 채널들의 깊이별 콘볼루션 계산들의 결과들을 판독하고, p 개의 포인트들, m 개의 채널들의 승산 및 누산 결과들을 계산하여―여기서의 누산은 채널 방향의 누산임―, p 개의 포인트들, 1 개의 출력 채널의 포인트별 콘볼루션 부분 합들(첫 번째 내지 m 번째 입력 채널들로부터의 부분 합들)을 획득하는 단계.
[0216] 6. 상기에 언급된 단계 5의 결과들을 레지스터 또는 온-칩 SRAM에 저장하는 단계.
[0217] 7. 포인트별 콘볼루션이 총 n 개의 콘볼루션 커널들을 갖는다고 가정하여, 단계 5 및 단계 6의 N 회의 연산들을 순환시키는 것에 의해 p 개의 포인트들, N 개의 출력 채널들(첫 번째 내지 m 번째 입력 채널들의 부분 합들)의 포인트별 콘볼루션 부분 합들의 계산 및 저장을 완료하는 단계, N 개의 출력 채널들 상의 p 개의 출력 포인트들의 부분 합들의 결과들은 레지스터 또는 온-칩 SRAM에 저장된다.
[0218] 도 10에 도시된 바와 같이, 포인트별 콘볼루션의 콘볼루션 커널의 사이즈는 1*1이고, 512 개의 승산기-가산기 유닛들(여기서의 512 개의 승산기-가산기 유닛들 및 깊이별 계산 프로세스의 512 개의 승산기-가산기 유닛들은 512 개의 승산기-가산기 유닛들과 동일할 수도 있거나, 또는 상이할 수도 있다)이 있다고 또한 가정되고, 32 개의 포인트들(상기에 언급된 p=32), 16 개의 채널들(상기에 언급된 m=16, 즉, 채널 변수 c는 0 내지 15의 범위로부터의 값을 취한다), 1 개의 콘볼루션 커널의 콘볼루션이 매 회 계산되고, 1 개의 출력 채널 상의 32 개의 포인트들의 부분 합들의 데이터가 획득된다. 256 개의 콘볼루션 커널들이 있다고 가정하면, 그 후에 256*(128/16)=2048 회의 계산들 후에, 256 개의 출력 채널들 상의 32 개의 포인트들의 부분 합들의 데이터가 획득된다.
[0219] 8. 단계들 1 내지 7의 연산들을 반복하여, 연속적으로 계산하여 다음의 m 개의 출력 채널들 상의 p 개의 포인트들의 부분 합들(m+1 번째 내지 2m 번째 입력 채널들 상의 부분 합들)을 획득하고, 이들 부분 합들을 이전에 저장된 부분 합들과 누산하고 누산 결과들을 레지스터 또는 온-칩 SRAM에 저장하여, 이러한 방식으로,
Figure pat00010
회의 순환을 통해 N 개의 출력 채널들 상의 p 개의 출력 포인트들의 포인트별 콘볼루션의 최종 누산 결과들을 획득하는 단계.
[0220] 9. 상기에 언급된 단계 8의 결과들 상에서 임의적인 활성화 연산을 수행하는 단계, 활성화 연산은 수치를 비선형 함수와 재매핑시키는 것을 지칭하고, 활성화 함수는 ReLu 함수, 시그모이드 함수, 아크탄젠트(tan) 함수 등을 포함하지만 이들로 제한되지 않는다.
[0221] 10. 상기에 언급된 단계 9의 결과들 상에서 임의적인 양자화 연산을 수행하는 단계, 양자화 연산은 고정밀도 승산 및 누산 결과들(통상적으로 32 비트)을 시프팅 또는 승산 및 제산하는 것에 의해 저정밀도 승산 및 누산 결과들(통상적으로 8 비트)을 획득하는 것을 지칭한다.
[0222] 11. 완전한 출력 특징 맵이 획득될 때까지 다음의 p 개의 포인트들을 연속적으로 계산하는 것에 의해 단계들 1 내지 10의 상술한 연산들을 반복하는 단계.
[0223] 제1 실시예의 구체적인 예 및 제3 실시예의 구체적인 예와 비교하여, 깊이별 콘볼루션이 M 개의 채널들을 가지며(또는 채널들의 수가 1인 것으로 간주될 때, 그것은 또한 번호로서 간주될 수도 있다), 포인트별 콘볼루션이 N 개의 콘볼루션 커널들을 갖는 경우, 그러면 전자의 솔루션은 일반적으로 양자화되는 p*M 깊이별 콘볼루션 결과 데이터(8 비트들)를 버퍼링할 필요가 있고, p*M*8 비트들의 버퍼 공간이 필요하다는 것이 확인될 수도 있다. 후자의 솔루션은 일반적으로 고정밀이고 비양자화되는 p*N 부분 합 데이터(32 비트들)를 버퍼링할 필요가 있고, 그 후에 p*N*32 비트들의 저장 공간이 요구된다. 깊이별 콘볼루션 결과들이 양자화되고 부분 합 결과들이 양자화되지 않는 전형적인 경우에, M>4n인 경우, 후자의 솔루션이 보다 많은 저장 공간을 절약할 것이고, 그렇지 않으면 전자의 솔루션이 보다 많은 저장 공간을 절약할 것이라는 것이 확인될 수도 있다.
[0224] 그에 따라, 본 개시내용의 실시예에서, 신경망에서의 콘볼루션 계산 방법은, 콘볼루션 커널들의 채널들의 수(또는 번호) M과 포인트별 콘볼루션 커널들의 수 n을 비교하는 단계; M>4N에 응답하여, 본 개시내용의 제1 실시예에 따른 콘볼루션 계산 방법을 수행하여 출력 특징 값들을 계산하고, 그렇지 않으면, 본 개시내용의 제3 실시예에 따른 콘볼루션 계산 방법을 선택하여 출력 특징 값들을 계산하는 단계를 더 포함할 수도 있다.
예시적인 전자 디바이스
[0225] 이하, 본 개시내용의 실시예에 따른 전자 디바이스가 도 15를 참조하여 설명될 것이다.
[0226] 도 15는 본 개시내용의 실시예에 따른 전자 디바이스의 블록도를 도시한다.
[0227] 도 15에 도시된 바와 같이, 전자 디바이스(10)는 하나 또는 그 초과의 프로세서들(11) 및 메모리들(12)을 포함한다.
[0228] 프로세서(11)는 데이터 프로세싱 능력 및/또는 명령어 실행 능력을 갖는 임의의 형태의 프로세싱 유닛일 수도 있고, 원하는 기능들을 수행하기 위해 전자 디바이스(10)에서의 다른 어셈블리를 제어할 수도 있다.
[0229] 메모리(12)는, 휘발성 메모리 및/또는 비휘발성 메모리와 같은 다양한 형태들의 컴퓨터 판독가능 및 기입가능 저장 매체들을 포함할 수도 있는 하나 또는 그 초과의 컴퓨터 프로그램 제품들을 포함할 수도 있다. 휘발성 메모리는, 예를 들어, 랜덤 액세스 메모리(RAM) 및/또는 캐시 등을 포함할 수도 있다. 비휘발성 메모리는, 예를 들어, 판독 전용 메모리(ROM), 하드 디스크, 플래시 메모리 등을 포함할 수도 있다. 하나 또는 그 초과의 컴퓨터 프로그램 명령어들은 컴퓨터 판독가능 저장 매체 상에 저장될 수도 있고, 프로세서(11)는 상기에 설명된 바와 같은 본 개시내용의 다양한 실시예들의 신경망에서 콘볼루션 계산 방법 및/또는 다른 원하는 기능들을 구현하기 위해 프로그램 명령어들을 실행할 수도 있다.
[0228] 일 예에서, 전자 디바이스(10)는 또한 입력 디바이스(13) 및 출력 디바이스(14)를 포함할 수도 있고, 이들 어셈블리는 버스 시스템 및/또는 다른 형태의 커넥션 메커니즘(도시되지 않음)에 의해 상호연결된다.
[0231] 예를 들어, 입력 디바이스(13)는, 예를 들어, 키보드, 마우스, 및 그것이 연결되는 통신 네트워크 및 원격 입력 디바이스들 등을 포함할 수도 있다.
[0232] 예를 들어, 출력 디바이스(14)는, 예를 들어, 디스플레이, 프린터, 및 그것이 연결되는 통신 네트워크 및 원격 출력 디바이스들 등을 포함할 수도 있다.
[0233] 물론, 간략화를 위해, 전자 디바이스(10)에서의 본 개시내용에 관련된 어셈블리들 중 단지 일부만이 도 15에 도시되어 있고, 버스, 입/출력 인터페이스 등과 같은 어셈블리들이 생략된다. 도 15에 도시된 전자 디바이스(10)의 어셈블리들 및 구조체들은 제한하는 것이 아니라 단지 예시적인 것일 뿐이고, 전자 디바이스(10)는 필요에 따라 다른 어셈블리들 및 구조체들을 가질 수도 있다는 것에 유의해야 한다.
예시적인 컴퓨터 프로그램 제품 및 컴퓨터 판독가능 및 기입가능 저장 매체
[0234] 상기에 설명된 방법들 및 장치에 부가적으로, 본 개시내용의 실시예들은 또한, 컴퓨터 프로그램 명령어들을 포함하는 컴퓨터 프로그램 제품일 수도 있고, 상기 컴퓨터 프로그램 명령어들은, 프로세서에 의해 실행될 때, 프로세서가 본 개시내용의 상기에 언급된 "예시적인 방법" 부분에서 설명된 바와 같은 본 개시내용의 다양한 실시예들에 따른 신경망에 대한 합성 연산 방법에서의 단계들을 수행하게 한다.
[0235] 컴퓨터 프로그램 제품은, 자바, C++ 등과 같은 객체 지향 프로그래밍 언어들, 및 "C" 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차형 프로그래밍 언어들을 포함하는 하나 또는 그 초과의 프로그래밍 언어들의 임의의 조합으로 본 개시내용의 실시예들의 연산들을 수행하기 위한 프로그램 코드를 기입할 수도 있다. 프로그램 코드는 사용자 컴퓨팅 디바이스 상에서 전체적으로 실행되거나, 사용자 디바이스 상에서 부분적으로 실행되거나, 독립형 소프트웨어 패키지로서 실행되거나, 사용자 컴퓨팅 디바이스 상에서 부분적으로 실행되고 원격 컴퓨팅 디바이스 상에서 부분적으로 실행되거나, 또는 원격 컴퓨팅 디바이스 또는 서버 상에서 전체적으로 실행될 수도 있다.
[0236] 게다가, 본 개시내용의 실시예들은 또한 컴퓨터 프로그램 명령어들을 저장하는 컴퓨터 판독가능 및 기입가능 저장 매체일 수도 있고, 상기 컴퓨터 프로그램 명령어들은, 프로세서에 의해 실행될 때, 프로세서가 본 개시내용의 상기에 언급된 "예시적인 방법" 부분에서 설명된 바와 같은 본 개시내용의 다양한 실시예들에 따른 신경망에 대한 합성 연산 방법에서의 단계들을 수행하게 한다.
[0237] 컴퓨터 판독가능 및 기입가능 저장 매체는 하나 또는 그 초과의 판독가능 및 기입가능 매체들의 임의의 조합을 사용할 수도 있다. 판독가능 및 기입가능 매체는 판독가능 및 기입가능 신호 매체 또는 판독가능 및 기입가능 저장 매체일 수도 있다. 판독가능 및 기입가능 저장 매체는 전기, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 상술한 것의 임의의 조합을 포함할 수도 있지만, 이에 제한되지 않는다. 판독가능 및 기입가능 저장 매체의 더 구체적인 예들(비포괄적인 리스트)은, 하나 또는 그 초과의 와이어들을 갖는 전기 커넥션, 휴대용 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능 프로그래밍가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 상술한 것의 임의의 적합한 조합을 포함한다.
[0238] 본 개시내용의 기본 원리들은 구체적인 실시예들과 관련하여 상술되어 있다. 그러나, 본 개시내용에서 언급된 이점들, 우수성들, 및 효과들 등은 단지 예들일 뿐이고 본 발명을 제한하려고 의도된 것이 아니라는 점을 지적할 필요가 있다. 이들 이점들, 우수성들, 효과들 등은 본 개시내용의 실시예들에 필수적인 것으로서 간주되지 않을 것이다. 부가적으로, 전술한 개시내용의 구체적인 세부사항들은 제한의 목적을 위한 것이 아니라 단지 이해의 용이함 및 예시의 목적을 위한 것이고, 상술한 세부사항들은 상기에 언급된 구체적인 세부사항들에서 구현될 적용예를 제한하지 않는다.
[0239] 본 개시내용에서 지칭되는 디바이스, 장치, 장비, 시스템의 블록도들은 단지 예시적인 예들일 뿐이고 커넥션들, 배열들, 및 구성들이 블록도에 도시되는 방식으로 이루어져야 한다는 것을 요구 또는 암시하려고 의도된 것이 아니다. 디바이스, 장치, 장비, 시스템이 임의의 방식으로 연결, 배열, 또는 구성될 수도 있다는 것이 본 기술분야의 통상의 기술자에 의해 이해될 것이다. "포함하는(including)", "포함하는(comprising)", "갖는" 등과 같은 용어들은 "포함하지만 이에 제한되지 않는"을 의미하는 개방형 단어들이고, 상호교환가능하게 사용될 수도 있다. 본 명세서에서 사용되는 바와 같은 "또는"과 "및"이라는 용어들은 "및/또는"이라는 용어를 지칭하고, 문맥에 달리 명백히 명시되지 않는 한, 상호교환가능하게 사용될 수도 있다. 본 명세서에서 사용되는 바와 같은 "~ 와 같은(such as)"이라는 용어는 "~ 와 같은 그러나 이에 제한되지 않는(such as but not limited to)"이라는 어구를 지칭하고 상호교환가능하게 사용된다.
[0240] 또한, 본 개시내용의 장치, 장비, 및 방법에서, 각각의 컴포넌트 또는 각각의 단계는 분해 및/또는 재조합될 수도 있다는 것에 유의해야 한다. 이들 분해들 및/또는 재조합은 본 개시내용의 등가물로서 간주되어야 한다.
[0241] 개시된 양태들의 상술한 설명은 본 기술분야의 통상의 기술자가 본 출원을 제조 또는 사용하는 것을 가능하게 하도록 제공된다. 이들 양태들에 대한 다양한 수정들은 본 기술분야의 통상의 기술자에게 매우 명백하고, 본 명세서에서 정의되는 일반 원리들은 본 출원의 범주로부터 벗어남이 없이 다른 양태들에 적용될 수도 있다. 그에 따라, 본 개시내용은 본 명세서에서 보여진 양태들로 제한되도록 의도된 것이 아니라, 본 명세서에 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범주를 제시하려는 것이다.
[0242] 상술한 설명은 예시 및 설명의 목적들을 위해 제공되었다. 부가적으로, 본 설명은 본 개시내용의 실시예들을 본 명세서에 개시된 형태들로 제한하려고 의도된 것이 아니다. 다양한 예시적인 양태들 및 실시예들이 상기에 논의되었지만, 본 기술분야의 통상의 기술자는 일부 변형, 수정, 변경들, 부가 및 하위 조합을 인식할 것이다.

Claims (15)

  1. 신경망(neural network)에서의 콘볼루션 계산(convolution calculation)을 위한 방법으로서,
    동적 랜덤 액세스 메모리(DRAM)로부터 입력 특징 맵(input feature map), 깊이별 콘볼루션 커널(depthwise convolution kernel)들 및 포인트별 콘볼루션 커널(pointwise convolution kernel)들을 판독하는 단계;
    모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하기 위해 상기 입력 특징 맵, 상기 깊이별 콘볼루션 커널들 및 상기 포인트별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산 유닛들 및 포인트별 콘볼루션 계산 유닛들에 의해 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하는 단계―상기 제1의 미리 결정된 수 p는 온-칩 메모리(on-chip memory) 내의 가용 공간, 상기 깊이별 콘볼루션 계산 유닛들의 수, 상기 입력 특징 맵의 높이 및 폭, 및 채널 수 차원들 중 적어도 하나에 따라 결정됨―;
    모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 상기 출력 특징 값들을 온-칩 메모리에 저장하는 단계; 및
    상술한 연산을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득하는 단계를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  2. 제1 항에 있어서,
    상기 수행하는 단계는,
    상기 입력 특징 맵 및 상기 깊이별 콘볼루션 커널들에 따라 상기 깊이별 콘볼루션 계산들을 수행하여, 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하고, 각각의 중간 특징 값을 상기 온-칩 메모리에 저장하는 단계―상기 제2의 미리 결정된 수 m은 상기 제1의 미리 결정된 수 p 및 상기 깊이별 콘볼루션 계산 유닛들의 수에 따라 결정됨―;
    상기 포인트별 콘볼루션 커널들 및 상기 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 상기 포인트별 콘볼루션 계산들을 수행하여, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득하는 단계;
    모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합 및 상기 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 결과들 상에서 누산 계산들을 각각 수행하여, 상기 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 결과들을 생성하고 상기 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 결과들을 상기 온-칩 메모리에 저장하는 단계; 및
    상기 포인트별 콘볼루션 커널들 및 다음의 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 상기 포인트별 콘볼루션 계산들을 수행하는 것, 그리고 이에 대응하여 상기 포인트별 콘볼루션 계산들 및 누산 계산들이 모든 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 모든 중간 특징 값들 상에서 완료될 때까지 후속 연산들을 수행하는 것에 의해 상술한 연산들을 반복하는 단계―상기 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들은, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들임―를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  3. 제2 항에 있어서,
    상기 입력 특징 맵 및 상기 깊이별 콘볼루션 커널들에 따라 상기 깊이별 콘볼루션 계산들을 수행하여, 다음의 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 단계는,
    상기 입력 특징 맵으로부터 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들을 판독하는 단계;
    상기 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들에 대응하여, 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 가중 값들을 판독하는 단계; 및
    상기 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들 및 상기 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 가중 값들 상에서 상기 깊이별 콘볼루션 계산들을 각각 수행하여, 상기 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들에 각각 대응하는 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 단계를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  4. 제3 항에 있어서,
    상기 포인트별 콘볼루션 계산들을 수행하는 단계와 동시에, 상기 입력 특징 맵으로부터의 상기 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들 및 대응하는 가중 값들을 판독하는 단계를 더 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  5. 제3 항에 있어서,
    상기 입력 특징 맵으로부터 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들을 판독하는 단계는,
    상기 입력 특징 맵으로부터 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들을 판독하는 단계―각각의 포인트들의 그룹은, 깊이별 콘볼루션 커널에서의 가중 값들의 폭 및 높이와 동일한 폭 및 높이를 가지며, 2 개의 인접한 포인트들의 그룹들은, 깊이별 콘볼루션 계산의 스트라이드(stride)와 동일한 스트라이드를 가짐―를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  6. 제3 항에 있어서,
    상기 제2의 미리 결정된 수 m의 입력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들의 입력 특징 값들 및 상기 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널에서의 가중 값들 상에서 상기 깊이별 콘볼루션 계산들을 각각 수행하여, 상기 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 그룹들에 각각 대응하는 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 획득하는 단계는,
    상기 제1의 미리 결정된 수 p의 포인트들의 그룹들에서의 각각의 그룹의 포인트들에 대한 다음의 연산들:
    상기 제2의 미리 결정된 수 m의 입력 채널들 상의 상기 그룹의 포인트들에서의 하나의 포인트의 입력 특징 값들 및 상기 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널에서의 대응하는 가중 값 상에서 승산 계산들을 각각 수행하여, 상기 포인트들의 그룹의 현재 승산 계산 결과들을 획득하는 것;
    상기 포인트들의 그룹의 현재 승산 계산 결과들 및 상기 포인트들의 그룹의 이전 승산 계산 결과들 상에서 누산 계산들을 각각 수행하여, 상기 포인트들의 그룹의 현재 누산 계산 결과들을 생성하는 것; 및
    상기 제2의 미리 결정된 수 m의 입력 채널들 상의 상기 포인트들의 그룹의 다음 포인트의 입력 특징 값들 및 상기 대응하는 제2의 미리 결정된 수 m의 깊이별 콘볼루션 커널들에서의 대응하는 다음의 하나의 가중 값 상에서 승산 계산들을 각각 수행하는 것, 그리고 이에 대응하여 상기 승산 계산들 및 누산 계산들이 상기 제2의 미리 결정된 수 m의 입력 채널들 상의 상기 포인트들의 그룹의 모든 포인트들의 입력 특징 값들 상에서 완료될 때까지 후속 연산들을 수행하는 것에 의해 상술한 연산들을 반복하는 것―상기 포인트들의 그룹의 최종 누산 계산 결과들은, 상기 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 상기 그룹의 포인트들에 대응하는 하나의 포인트의 중간 특징 값들임―을 수행하는 것
    을 수행하는 단계를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  7. 제2 항에 있어서,
    각각의 중간 특징 값이 상기 온-칩 메모리에 저장하기 전에 상기 각각의 중간 특징 값 상에서 활성화 연산 및 양자화 연산 중 적어도 하나를 수행하는 단계를 더 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  8. 제2 항에 있어서,
    상기 포인트별 콘볼루션 커널들 및 상기 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 따라 상기 포인트별 콘볼루션 계산들을 수행하여, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들을 획득하는 단계는,
    제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 모든 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 상기 포인트별 콘볼루션 계산들을 수행하여, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합(current pointwise convolution sub-partial sum)들을 획득하는 단계;
    모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들 및 상기 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 하위-결과들 상에서 누산 계산들을 각각 수행하여, 상기 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 하위-결과들을 생성하는 단계; 및
    다음의 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 모든 포인트별 콘볼루션 커널들에서의 대응하는 다음의 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 상기 포인트별 콘볼루션 계산들을 수행하는 것, 그리고 이에 대응하여 상기 포인트별 콘볼루션 계산들 및 누산 계산들이 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 모든 중간 특징 값들 상에서 완료될 때까지 후속 연산들을 수행하는 것에 의해 상술한 연산들을 반복하는 단계―상기 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 하위-결과들은, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 부분 합들임―를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  9. 제8 항에 있어서,
    제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 모든 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 각각에 따라 상기 포인트별 콘볼루션 계산들을 수행하여, 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 단계는,
    상기 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들에 따라 상기 포인트별 콘볼루션 계산들을 수행하여, 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 단계―상기 제3의 미리 결정된 수 m' 및 상기 제4의 미리 설정된 수 n은 상기 제1의 미리 결정된 수 p 및 포인트별 콘볼루션 계산 유닛들의 수에 따라 결정됨―; 및
    모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들까지, 상기 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 상기 포인트별 콘볼루션 계산들을 수행하여, 상기 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 다음의 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 것에 의해 상술한 연산들을 반복하는 단계를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  10. 제9 항에 있어서,
    상기 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들에 따라 상기 포인트별 콘볼루션 계산들을 수행하여, 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합을 획득하는 단계는,
    상기 제2의 미리 결정된 수 m의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들로부터 상기 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들을 판독하는 단계;
    상기 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들에 대응하여, 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들을 판독하는 단계; 및
    상기 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 상기 포인트별 콘볼루션 계산들을 각각 수행하여, 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 단계를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  11. 제10 항에 있어서,
    상기 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 중간 특징 값들 및 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 상기 포인트별 콘볼루션 계산들을 각각 수행하여, 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 단계는,
    상기 제1의 미리 결정된 수 p의 포인트들의 각각의 포인트 상의 다음의 연산들:
    상기 제3의 미리 결정된 수 m'의 깊이별 콘볼루션 출력 채널들 상의 포인트의 중간 특징 값들 및 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에서의 대응하는 제3의 미리 결정된 수 m'의 포인트별 콘볼루션 채널들 상의 가중 값들 상에서 승산 계산들을 각각 수행하여, 제4의 미리 결정된 수 n의 그룹들의 결과들을 획득하는 것―상기 그룹들의 각각의 그룹은 제3의 미리 결정된 수 m'의 승산 계산 결과들을 포함함―; 및
    상기 제4의 미리 결정된 수 n의 그룹들의 결과들에서의 각각의 그룹의 결과들의 제3의 미리 결정된 수 m'의 승산 계산 결과들을 각각 가산하여, 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 커널들에 대응하는 상기 제4의 미리 결정된 수 n의 포인트별 콘볼루션 출력 채널들 상의 포인트의 현재 포인트별 콘볼루션 하위-부분 합들을 획득하는 것
    을 수행하는 단계를 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  12. 제8 항에 있어서,
    상기 제1의 미리 결정된 수 p의 포인트들의 현재 누산 계산 하위-결과들을, 상기 현재 누산 계산 하위-결과들을 생성한 후에 상기 온-칩 메모리에 저장하여, 상기 제1의 미리 결정된 수 p의 포인트들의 이전 누산 계산 하위-결과들을 커버하는 단계를 더 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  13. 제2 항에 있어서,
    상기 제1의 미리 결정된 수 p의 포인트들의 최종 누산 계산 결과들을 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들로서 상기 온-칩 메모리에 저장하기 전에 각각의 출력 특징 값 상에서 활성화 연산 및 양자화 연산 중 적어도 하나를 수행하는 단계를 더 포함하는,
    신경망에서의 콘볼루션 계산을 위한 방법.
  14. 전자 디바이스로서,
    프로세서; 및
    상기 프로세서에 의해 실행될 때, 상기 프로세서가 신경망에서의 콘볼루션 계산을 위한 방법을 수행하게 하는 컴퓨터 프로그램 명령어들을 저장하는 메모리를 포함하고,
    상기 방법은,
    동적 랜덤 액세스 메모리(DRAM)로부터 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들을 판독하는 단계;
    상기 입력 특징 맵, 상기 깊이별 콘볼루션 커널들 및 상기 포인트별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산 유닛들 및 포인트별 콘볼루션 계산 유닛들에 의해 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하여 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하는 단계;
    모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 상기 출력 특징 값들을 온-칩 메모리에 저장하는 단계; 및
    상술한 연산을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득하는 단계를 포함하는,
    전자 디바이스.
  15. 컴퓨터 프로그램 명령어들을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 프로그램 명령어들은, 프로세서에 의해 실행될 때, 상기 프로세서가 신경망에서의 콘볼루션 계산을 위한 방법을 수행하게 하고,
    상기 방법은,
    동적 랜덤 액세스 메모리(DRAM)로부터 입력 특징 맵, 깊이별 콘볼루션 커널들 및 포인트별 콘볼루션 커널들을 판독하는 단계;
    상기 입력 특징 맵, 상기 깊이별 콘볼루션 커널들 및 상기 포인트별 콘볼루션 커널들에 따라 깊이별 콘볼루션 계산 유닛들 및 포인트별 콘볼루션 계산 유닛들에 의해 깊이별 콘볼루션 계산들 및 포인트별 콘볼루션 계산들을 수행하여 모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 출력 특징 값들을 획득하는 단계;
    모든 포인트별 콘볼루션 출력 채널들 상의 제1의 미리 결정된 수 p의 포인트들의 상기 출력 특징 값들을 온-칩 메모리에 저장하는 단계; 및
    상술한 연산을 반복하여 모든 포인트별 콘볼루션 출력 채널들 상의 모든 포인트들의 출력 특징 값들을 획득하는 단계를 포함하는,
    컴퓨터 프로그램 명령어들을 저장하는 컴퓨터 판독가능 저장 매체.
KR1020180164357A 2017-12-18 2018-12-18 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스 KR102305851B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711361968.7 2017-12-18
CN201711361968.7A CN107844828B (zh) 2017-12-18 2017-12-18 神经网络中的卷积计算方法和电子设备

Publications (2)

Publication Number Publication Date
KR20190073303A true KR20190073303A (ko) 2019-06-26
KR102305851B1 KR102305851B1 (ko) 2021-09-27

Family

ID=61663315

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180164357A KR102305851B1 (ko) 2017-12-18 2018-12-18 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스

Country Status (5)

Country Link
US (1) US20190188237A1 (ko)
EP (1) EP3499428A1 (ko)
JP (1) JP6762352B2 (ko)
KR (1) KR102305851B1 (ko)
CN (1) CN107844828B (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108520297B (zh) * 2018-04-02 2020-09-04 周军 可编程深度神经网络处理器
CN108549931A (zh) * 2018-04-25 2018-09-18 济南浪潮高新科技投资发展有限公司 一种卷积神经网络的加速装置及方法
CN108710906B (zh) * 2018-05-11 2022-02-11 北方民族大学 基于轻量级网络LightPointNet的实时点云模型分类方法
CN110633785B (zh) * 2018-06-21 2021-01-05 清华大学 一种卷积神经网络的计算方法及系统
CN110766127B (zh) * 2018-07-25 2022-09-23 赛灵思电子科技(北京)有限公司 神经网络计算专用电路及其相关计算平台与实现方法
CN110858323A (zh) * 2018-08-23 2020-03-03 北京京东金融科技控股有限公司 基于卷积的图像处理方法、装置、介质及电子设备
CN109284817B (zh) * 2018-08-31 2022-07-05 中国科学院上海高等研究院 深度可分离卷积神经网络处理架构/方法/系统及介质
US20200090030A1 (en) * 2018-09-19 2020-03-19 British Cayman Islands Intelligo Technology Inc. Integrated circuit for convolution calculation in deep neural network and method thereof
EP3873348A4 (en) * 2018-11-01 2022-08-17 The Brigham & Women's Hospital, Inc. AUTOMATIC DETERMINATION OF A BIOLOGICAL AFFECTION OF A SUBJECT FROM PATTERNS OF FERN LEAVES
US11449729B2 (en) * 2018-11-08 2022-09-20 Arm Limited Efficient convolutional neural networks
CN109753996B (zh) * 2018-12-17 2022-05-10 西北工业大学 基于三维轻量化深度网络的高光谱图像分类方法
CN109740534B (zh) * 2018-12-29 2021-06-25 北京旷视科技有限公司 图像处理方法、装置及处理设备
CN109976903B (zh) * 2019-02-22 2021-06-29 华中科技大学 一种基于层宽内存分配的深度学习异构计算方法和系统
CN110009103B (zh) * 2019-03-26 2021-06-29 深兰科技(上海)有限公司 一种深度学习卷积计算的方法和装置
KR102432254B1 (ko) * 2019-05-16 2022-08-12 삼성전자주식회사 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치
CN112183711B (zh) * 2019-07-01 2023-09-12 瑞昱半导体股份有限公司 使用像素通道置乱的卷积神经网络的演算方法与系统
CN110458280B (zh) * 2019-07-15 2022-08-30 武汉魅瞳科技有限公司 一种适用于移动端的卷积神经网络加速方法及系统
CN112308105B (zh) * 2019-08-02 2024-04-12 北京图森智途科技有限公司 目标检测方法、目标检测器及相关设备
US11657282B2 (en) * 2019-09-16 2023-05-23 Qualcomm Incorporated Efficient inferencing with fast pointwise convolution
CN111091181B (zh) * 2019-12-09 2023-09-05 Oppo广东移动通信有限公司 卷积处理单元、神经网络处理器、电子设备及卷积运算方法
CN113052291B (zh) * 2019-12-27 2024-04-16 上海商汤智能科技有限公司 数据处理方法和装置
CN111291864B (zh) * 2020-01-20 2023-11-03 Oppo广东移动通信有限公司 运算处理模组、神经网络处理器、电子设备及数据处理方法
US11423315B2 (en) * 2020-02-06 2022-08-23 National Tsing Hua University Quantization method for partial sums of convolution neural network based on computing-in-memory hardware and system thereof
CN113361679B (zh) * 2020-03-05 2023-10-17 华邦电子股份有限公司 存储器装置及其操作方法
CN111382712B (zh) * 2020-03-12 2023-06-02 厦门熵基科技有限公司 一种手掌图像识别方法、系统及设备
US20210334072A1 (en) * 2020-04-22 2021-10-28 Facebook, Inc. Mapping convolution to connected processing elements using distributed pipelined separable convolution operations
CN111610963B (zh) * 2020-06-24 2021-08-17 上海西井信息科技有限公司 芯片结构及其乘加计算引擎
CN111985645A (zh) * 2020-08-28 2020-11-24 北京市商汤科技开发有限公司 一种神经网络的训练方法、装置、电子设备及存储介质
CN112200300B (zh) * 2020-09-15 2024-03-01 星宸科技股份有限公司 卷积神经网络运算方法及装置
CN112396165A (zh) * 2020-11-30 2021-02-23 珠海零边界集成电路有限公司 用于卷积神经网络的运算装置和方法
CN112801266B (zh) * 2020-12-24 2023-10-31 武汉旷视金智科技有限公司 神经网络构建方法、装置、设备及介质
CN112862774B (zh) * 2021-02-02 2021-12-07 重庆市地理信息和遥感应用中心 一种遥感影像建筑物精确分割方法
KR20220114890A (ko) * 2021-02-09 2022-08-17 한국과학기술정보연구원 뉴럴 네트워크 연산 방법 및 이를 위한 장치
US11544213B2 (en) * 2021-03-04 2023-01-03 Samsung Electronics Co., Ltd. Neural processor
WO2022195891A1 (ja) * 2021-03-19 2022-09-22 三菱電機株式会社 構成変換装置、構成変換方法、および構成変換プログラム
CN114943635B (zh) * 2021-09-30 2023-08-22 太初(无锡)电子科技有限公司 一种基于异构协同计算核心的融合算子设计与实现方法
CN116306840A (zh) * 2021-12-03 2023-06-23 中兴通讯股份有限公司 神经网络运算方法、装置、芯片、电子设备和存储介质
CN116720563B (zh) * 2022-09-19 2024-03-29 荣耀终端有限公司 一种提升定点神经网络模型精度的方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160138892A (ko) * 2015-05-26 2016-12-06 삼성전자주식회사 계층적 앙상블 학습 방식을 사용하는 신경망 학습 방법 및 장치
KR20170070715A (ko) * 2015-12-14 2017-06-22 삼성전자주식회사 딥러닝 기반 영상 처리 장치 및 방법, 학습 장치
KR20170092595A (ko) * 2014-11-26 2017-08-11 큐리어스 에이아이 오와이 신경망 구조 및 그에 대한 방법
KR20170133364A (ko) * 2015-05-21 2017-12-05 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400955B2 (en) * 2013-12-13 2016-07-26 Amazon Technologies, Inc. Reducing dynamic range of low-rank decomposition matrices
CN106339753A (zh) * 2016-08-17 2017-01-18 中国科学技术大学 一种有效提升卷积神经网络稳健性的方法
CN106355244B (zh) * 2016-08-30 2019-08-13 深圳市诺比邻科技有限公司 卷积神经网络的构建方法及系统
CN106951962B (zh) * 2017-03-22 2020-09-01 南京地平线机器人技术有限公司 用于神经网络的复合运算单元、方法和电子设备
CN107451654B (zh) * 2017-07-05 2021-05-18 深圳市自行科技有限公司 卷积神经网络的加速运算方法、服务器及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170092595A (ko) * 2014-11-26 2017-08-11 큐리어스 에이아이 오와이 신경망 구조 및 그에 대한 방법
KR20170133364A (ko) * 2015-05-21 2017-12-05 구글 엘엘씨 신경망 프로세서에서의 배치 프로세싱
KR20160138892A (ko) * 2015-05-26 2016-12-06 삼성전자주식회사 계층적 앙상블 학습 방식을 사용하는 신경망 학습 방법 및 장치
KR20170070715A (ko) * 2015-12-14 2017-06-22 삼성전자주식회사 딥러닝 기반 영상 처리 장치 및 방법, 학습 장치

Also Published As

Publication number Publication date
JP2019109896A (ja) 2019-07-04
JP6762352B2 (ja) 2020-09-30
EP3499428A1 (en) 2019-06-19
KR102305851B1 (ko) 2021-09-27
US20190188237A1 (en) 2019-06-20
CN107844828B (zh) 2021-07-30
CN107844828A (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
KR102305851B1 (ko) 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스
KR102285965B1 (ko) 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
US11574195B2 (en) Operation method
CN106951962B (zh) 用于神经网络的复合运算单元、方法和电子设备
US11449729B2 (en) Efficient convolutional neural networks
EP3298545B1 (en) Vector computation unit in a neural network processor
CN111695671B (zh) 训练神经网络的方法及装置、电子设备
CN111767986A (zh) 一种基于神经网络的运算方法及装置
CN110555516A (zh) 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法
CN112561050B (zh) 一种神经网络模型训练方法及装置
Meng et al. How to avoid zero-spacing in fractionally-strided convolution? a hardware-algorithm co-design methodology
CN115761429A (zh) 车辆轨迹预测方法和装置、轨迹预测模型训练方法和装置
EP4374296A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US20220108203A1 (en) Machine learning hardware accelerator
WO2023004570A1 (en) Activation buffer architecture for data-reuse in a neural network accelerator
US20240013052A1 (en) Bit Sparse Neural Network Optimization
US9311272B1 (en) System and method for faster division
US20190073584A1 (en) Apparatus and methods for forward propagation in neural networks supporting discrete data
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
CN118036682A (zh) 加法神经网络的存内计算实现方法、装置、设备及介质
US9454345B1 (en) Apparatus for faster division
CN116028765A (zh) 一种卷积计算方法和装置
CN117492766A (zh) 编译方法、编译器、神经网络加速器、芯片及电子设备
CN115329327A (zh) 一种选择输入的水平能量分析卷积神经网络的方法及应用

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant