작성
·
59
0
안녕하세요. 2-8에서 한 가지 질문이 더 있어서 다시 질문드립니다.
FC NN Layer를 설명하는 부분인데요.
질문1.
맨 아래 셀과 그 위의 셀에서 output1과 output2를 비교하는 이유는 무엇인가요?
질문2.
맨 아래 셀에서 X @ layer_1.weight.T로 표기가 되어 있는데요. W @ X + b에 따라서 그 표기도, layer_1.weight @ X가 아닌지 궁금합니다. 만약 Transpose를 취하는 이유는 Weight가 T 이후에도 변하지 않기 때문인가요?
감사합니다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
iklee님께서 질문하신 내용에 대해 답변드리겠습니다.
질문 1.
맨 아래 셀과 그 위의 셀에서 output1
과 output2
를 비교하는 이유는, 모델이 torch.nn.Linear
로 자동 계산한 결과인 output1
과 직접 수식을 사용하여 수동으로 계산한 결과인 output2
를 비교하여 두 방법이 동일한지를 확인하기 위함입니다. 이는 torch.nn.Linear
의 동작이 실제 수동 계산과 일치하는지를 검증하는 과정입니다.
질문 2.
X @ layer_1.weight.T
로 표현한 이유는 PyTorch에서의 torch.nn.Linear
모듈이 기본적으로 입력(input
)과 가중치(weight
)를 곱할 때 입력의 마지막 차원과 가중치의 첫 번째 차원이 내적되는 방식입니다. 따라서 layer_1.weight
는 기본적으로 [출력 차원, 입력 차원]
의 형태를 가지며, 수동 계산을 할 때는 가중치를 전치(transpose)하여 [입력 차원, 출력 차원]
형태로 바꾸고 x와 내적 연산을 수행해야 합니다. 그렇게 하면 실제 계산: X @ layer_1.weight.T + bias
가 모델의 연산과 일치하게 되어 결과가 동일해집니다. 이 때 가중치가 전치되는 것은 실제 데이터 구조의 해석에 있어서 변화하는 것이 아니라, 연산의 편의를 위해서만 활용되기 때문입니다.
도움이 되셨기를 바랍니다! 추가로 궁금한 점이 있으시다면 언제든지 질문해 주세요.