작성
·
104
1
안녕하세요, 맛비님
먼저 좋은 강의 감사합니다.
수강 후 개인 복습 중 이상해 보이는 점을 질문 드립니다.
Fully Connected Layer 개념 설명에서 "weight 개수 = input node 수 x ouput node 수" 라고 설명하여 주셨는데
21 강 C 코드를 보면 input node의 수를 4096 개, output node의 수는 4개로
필요한 weight 수는 총 4096*4 개 필요함을 알 수 있었습니다.
그러나 C코드의 반복문 계산을 보면 input node 수도 weght 와 같이 4096*9 만큼 발생되어 Fully Connected Layer 연산에 착오가 생기는 듯 싶습니다.
혹시 제가 이해하고 있는 내용이 맞는지 설명해주실 수 있을까요???
답변 2
0
안녕하세요 🙂
제가 질문을 정확하게 이해 못한 것 같은데요.
다음 코드에서, input node 가 "9" 라는 숫자가 발생하는 부분이 어디 인지 알려주실 수 있을까요??
아.. 이해했습니다.
말씀해주신대로, input node 전부를 rand 로 생성하기 때문에, 4096*4 개가 생성이 되네요. 4096 개의 input node 만 rand 로 생성하고, weight 를 4096*4 개만큼 rand 로 생성해서, output 을 4개만 나오게 accum 하는 것이 맞습니다.
C 부분만 수정이 되면 될 것 같습니다. 수정해보면, 다음과 같습니다.
해당 부분은 강의 노트 밑에 남겨두겠습니다.
unsigned char IN_NODE[MEM_DEPTH]; // 8b
for (int i = 0; i<MEM_DEPTH; i++){ // input node 4096 개 생성
IN_NODE[i] = rand()%256; // 0~255 8b
}
for (int i = 0; i<MEM_DEPTH; i++){
for (int core = 0; core < NUM_CORE; core++) {
IN_WEGT[core] = rand()%256; // 0~255 8b
OT_RSLT[core] += IN_NODE[i] * IN_WEGT[core];
fprintf (fp_in_node, "%d ", IN_NODE[i]); // order 0 1
fprintf (fp_in_wegt, "%d ", IN_WEGT[core]); // order 0 1
}
fprintf (fp_in_node, "\n");
fprintf (fp_in_wegt, "\n");
}
찾아주셔서 감사합니다!!
명확하게 그 당시에 썼어야 했는데, 애매했네요;; (이미 찾아주신 분이 계셨었는데 ㅠ)
input node 개수에 따른 연산 오류 리포팅: https://inf.run/2xrK
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용은 프로그래밍 또는 하드웨어 설계의 구체적인 코드 분석이나 이해와 관련된 것으로 보입니다. 제공된 정보 중에는 프로그래밍, 하드웨어 설계 관련 직접적인 내용이 없어, 해당 질문에 대해 직접적인 답변을 드리기 어려움을 알려드립니다.
이 내용과 관련해서는 강의를 제공한 플랫폼이나 강사에게 직접 문의하시거나, 해당 기술에 대한 특정 포럼이나 커뮤니티에 질문하시는 것이 좋을 것 같습니다.
추가적인 도움이 필요하시면 질문 내용을 구체화하여 다시 문의 부탁드립니다.
앗 죄송합니다! 오타입니다! 9가 아니라 4입니다!
위 코드 상
인풋 노드 개수 = 웨이트 수 인 상황이 맞는가에 대한 의문이 듭니다!