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

akzpt020님의 프로필 이미지
akzpt020

작성한 질문수

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

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

input node 1,2,3,4 모두 같게 하기 위해서 코드 수정

작성

·

34

1

안녕하세요 🙂

[1. 질문 챕터] : 21장 17분 40초

[2. 질문 내용] : 기존 질문 에서 추가 질문 남깁니다. 기존 의도대로 4096 개의 input node, 4개의 ouput node를 갖는 딥러닝을 설계하고자 아래와 같이 수정되어야 한다고 생각하는 데, 시도한것이 맞는지 질문드립니다

[3. 시도했던 내용, 그렇게 생각하는 이유] :

  1. 다음과 같이 C코드 수정

for (int i = 0; i < MEM_DEPTH; i++) {
    // IN_NODE는 MEM_DEPTH만큼 랜덤 생성 후, NUM_CORE만큼 반복
    int node_value = rand() % 256;  // 0~255 범위의 랜덤값 생성 (8비트)
    
    for (int core = 0; core < NUM_CORE; core++) {
        IN_NODE[core] = node_value;  // 동일한 node_value를 NUM_CORE에 반복 할당
        IN_WEGT[core] = rand() % 256;  // IN_WEGT는 각 core마다 랜덤값 할당

        OT_RSLT[core] += IN_NODE[core] * IN_WEGT[core];

        fprintf(fp_in_node, "%d ", IN_NODE[core]);  // IN_NODE 값을 출력
        fprintf(fp_in_wegt, "%d ", IN_WEGT[core]);  // IN_WEGT 값을 출력
    }

    fprintf(fp_in_node, "\n");
    fprintf(fp_in_wegt, "\n");
}
  1. 기존 질문에서 말씀하신대로, node1,2,3,4가 같아야 한다는 것이

     

image.png

 이렇게 되어야한다는거 맞을까요??

  1. 수정없이 강의대로 진행할시,

     

    4096*4개의 input node, 1개의 output node를 갖는 딥러닝 추론을 진행한것이고,

     

    각 코어를 1번 run/done 하여 얻은 4개의 결과를 모두 더하면 1개의 output node의 결과를 얻은것과 같다고 이해해도 될런지 궁금합니다!

     

     

 

 

답변 2

0

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

안녕하세요 🙂

개인적인 코드 수정은 정확한 답변이 나갈 수 없고, 에너지 소모도 커서, 답변에 부담이 있다는거 양해부탁드려요.

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

A1,2 는 코드의 숫자하고, 숫자의 의미가 안보여서, 정상적인 수정인지는 모르겠어요.

A3 은 질문이 잘 이해가 안되는데, 수정없이 강의대로 진행이.. 정말 순수하게 수정이 없다면, 강의 내용을 따라가시면 될 것 같아요.

정성스럽게 작성해주셨는데, 답변이 시원치는 않네요 ㅠ

즐공하세요 🙂

 

 

0

안녕하세요, 인프런 AI 인턴입니다. akzpt020님.

질문 주신 내용을 자세히 검토해보니, Fully Connected Layer의 input node와 output node 설정에 대한 질문이군요. 아래에 관련된 정보와 유사한 질문에 대한 답변들을 정리해드리겠습니다.


관련 질문 & 답변

1. FPGA21장 - fully connected layer 설계 - 코드 리뷰 편에서 질문 있습니다(기존 질문)

해당 질문과 답변에서, 맛비님은 input node가 4096개, output node가 4개인 경우를 설명하면서 node1,2,3,4가 동일한 값을 가져야 한다고 말씀하셨습니다.

2. input node 갯수와 관련된 질문

이 답변에서는 input node가 4096개이고, output node가 4개인 경우에 대한 자세한 설명이 포함되어 있습니다. Interface에서는 4개의 input node를 이용한 연산 결과를 모두 합산해서 1개의 output을 얻는 방법에 대해 논의하였습니다.

요약 및 추가 설명

기존 설계
- input node 갯수: 4096 x 4 = 16384
- output node 갯수: 4개
- 각 core가 4096개의 input node를 처리를 동시에 수행

수정 제안 코드:
- IN_NODE[core] = node_value;를 통해 4개의 core가 동일한 input 값을 가지게 함
- 각 core는 별도의 weight 값을 가짐

향하는 목표는 코드 수정 후 4096개의 input node와 4개의 output node를 가지는 설계입니다. 이 경우 각 core가 동일한 input 값을 받으며, 이를 바탕으로 weight 값과의 연산을 통해 output을 구합니다.


운영기 논리적으로, 다수의 core를 통해 얻은 여러 개의 결과를 합산하여 최종 output을 얻는 방식은 효율적이고 타당합니다. 다음과 같은 사항을 최종 확인하세요:

  1. Input Node Initialization: 모든 core에서 동일한 node_value를 반복적으로 할당받도록 한 것은 정확합니다.
  2. Weight Initialization: 각 core의 weight는 개별적으로 설정되므로, 각 core의 output이 다르게 나올 것입니다.
  3. 결과 확인: Core 당 계산한 결과를 합산하여 최종 output으로 연결하는 과정에서, 계산의 정확성을 꼭 확인해주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

akzpt020님의 프로필 이미지
akzpt020

작성한 질문수

질문하기