인프런 커뮤니티 질문&답변

유승재님의 프로필 이미지
유승재

작성한 질문수

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

[FPGA 21장] 프로젝트 Fully Connected Layer 설계 - 코드리뷰편

input node 갯수와 관련된 질문

해결된 질문

작성

·

282

4

안녕하세요,
 
수업을 여러 번 들으면서 공부 중에 의문점이 들어 질문 드립니다.
 
수업 중에 input node가 4096개 일때를 기준으로 현재 fully connected layer 를 구현 중이다 라고 말씀하셨는데, 그렇게 되면 수학적으로 식은 다음과 같습니다.
 
(output node가 y개라는 가정 하에)
Weight_matrix: (y * 4096)크기의 행렬
input_matrix: (4096*1)크기의 행렬
output_matrix: (y*1)크기의 행렬
 
output_matrix = dot(Weight_matrix, input_matrix)
 
그러나 input node 경우, BRAM에 저장되는 과정에서 8bit로 표현되는 숫자가 4개씩 32bit에 memory depth 4096 만큼 저장이 되기 때문에 4*4096 = 16384개가 되는데 이는 input node 갯수가 4096개라는 처음 가정과 맞지 않습니다.
 
어떤 부분에 착오가 있는 것일까요?
 
 
 
 

답변 1

1

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

아.. 이런, 오해의 소지가 있겠네요. (문제가 맞습니다.)

제가 약간 말장난을 할 건데,

SW 를 보니까, input node 의 값 4개가 전부 random 이라 말씀하신대로

16384 입니다. 하지만 그 때는 (일반적으로) output node 는 1개가 되어야겠죠. 

왜냐하면, 16384 의 input node 수와 동일한 16384 의 weight 가 loading 되었으니까요. 

input node 16384 에 해당하는 최종 결과 1개를 구하려면,

우선 코어는 4096 의 결과 4개를 갖고 있으니, 4개를 SW 에서 가져간 후 최종적으로 sum 하면 결과를 얻을 수 있을 것 같습니다.

 

 

SW 의 input node gen 을 전부 동일하게 했다면, 오해의 소지가 사라질 것 같긴하네요

이렇게 이해해 주시면 될 것 같아요. 다음 그림에서,

input node 입력이 ( 파란색 영역)

node 0,1,2,3 이 전부 동일하다.

이러면 input node 4096 의 4 core 가 성립할 것 같습니다.

정리하면, 해당 HW 는 여러가지 Case 를 처리할 수 있을 것 같구요.

Overflow 의 가정을 제거하면, SW 에 loading 하는 값으로

말씀해주신, input node : 16384, output node : 1

처음 의도하였던, input node : 4096, output node : 4

물론 SW 만으로 더 다양한 조합을 만드실 수 있겠죠? 

 

 

유승재님의 프로필 이미지
유승재

작성한 질문수

질문하기