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

태엽님의 프로필 이미지
태엽

작성한 질문수

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

FPGA21장 - fully connected layer 설계 - 코드 리뷰 편에서 질문 있습니다

작성

·

515

1

 

https://www.inflearn.com/questions/330774

FPGA21장에서, FC layer에 대한 의문이 있어서 질문을 찾아본 결과, 위 링크의 질문자와 비슷한 질문이 생겼습니다.

위의 test.c 코드대로라면, 입력 노드는 4096 x 4 = 16384개가 된다고 생각하였습니다.

그러면 input = 16384, weight = 16384, output = 4개에 대하여

drop out 기법? 을 사용한 듯한 형태가 되는데, 이것을 의도하신 건지 여쭤보고 싶습니다.

아니라면, 위 링크의 질문에 답변 해주신 것처럼 node 0~4 의 값이 모두 동일해야 한다는 생각이 듭니다.

 

또, 오해의 소지가 있다고도 답변해주셨는데, 읽어봐도 어떠한 오해가 생긴건지 잘 이해가 안됩니다.

어떠한 오해가 있었던 것인지 간단하게라도 말씀해주시면 정말 감사하겠습니다.

 

이틀 뒤면 주말이네요! 오늘도 좋은 하루 되세요 맛비님.

답변 1

1

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

안녕하세요 :)

먼저 "drop out" 과는 무관하다, 이렇게 답변드리고 시작할께요.

"오해"  의 정의. 다음 그림 참고

 제가 말장난을 다시 하려고 하는데요. (이전 질문에 이어서...장난꾸러기네요)

결국 Core 는 16384 (4096*4) 의 곱하고 더하고 처리가 가능하죠.

그래서 다음과 같이 적었습니다. 

 

더위조심하시고, 즐공하세요 :)

 

============================================

다음 글은 백업의 의미로 남깁니다.

Input node 개수 : 4096

계산할 Output node 개수 : 4

총 필요한 weight 개수 (edge ) : 4096 * 4

Weight 다음처럼 4096 단위로 grouping

(0 weight_4096, 1 weight_4096, 2 weight_4096, 3weight_4096)

 

이때 필요한 input node 의 수는 4096 이지만,

결국 weight 수인 (4096*4) 만큼의 input node 수가 준비되어야 합니다.

왜냐하면 point wise 곱셈 (각각 곱한다) 이기 때문이죠.

그래서 로딩에 필요한 input node 의 수는 4096 *4 가 맞죠.

 

여기서 input node4096 으로 전부 같은 값을 사용하면,

위의 파란색글씨 설명이 가능하겠지만,

 

코드를 보시면, Random 으로 input node 4096*4 개를

Random 으로 만들고 있습니다. (4096 개의 input node 가 아닌 4096*4 개의 input node 가 되버린거죠. ㅠㅠ mistake 입니다.)

 

그래서 이 부분을 헷갈릴 수 있겠다. 이렇게 표현하였어요.

이 부분이 오해의 소지가 있겠다의 이유입니다.

 

 

 

실습 시 하나의 input node에 대한 값이 각각 4개로 설정되어서 혼란스러웠는데, 정정해주셔서 감사합니다.

태엽님의 프로필 이미지
태엽

작성한 질문수

질문하기