작성
·
517
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, 3번 weight_4096)
이때 필요한 input node 의 수는 4096 이지만,
결국 weight 수인 (4096*4) 만큼의 input node 수가 준비되어야 합니다.
왜냐하면 point wise 곱셈 (각각 곱한다) 이기 때문이죠.
그래서 로딩에 필요한 input node 의 수는 4096 *4 가 맞죠.
여기서 input node 가 4096 으로 전부 같은 값을 사용하면,
위의 파란색글씨 설명이 가능하겠지만,
코드를 보시면, Random 으로 input node 4096*4 개를
Random 으로 만들고 있습니다. (4096 개의 input node 가 아닌 4096*4 개의 input node 가 되버린거죠. ㅠㅠ mistake 입니다.)
그래서 이 부분을 헷갈릴 수 있겠다. 이렇게 표현하였어요.
이 부분이 오해의 소지가 있겠다의 이유입니다.
실습 시 하나의 input node에 대한 값이 각각 4개로 설정되어서 혼란스러웠는데, 정정해주셔서 감사합니다.