강의

멘토링

로드맵

Inflearn brand logo image

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

iklee님의 프로필 이미지
iklee

작성한 질문수

딥러닝 이론 + PyTorch 실무 완전 정복

[Sec. 2-8 실전] weight 곱의 위치

작성

·

59

0

안녕하세요. 2-8에서 한 가지 질문이 더 있어서 다시 질문드립니다.

FC NN Layer를 설명하는 부분인데요.

image.png

 

질문1.

맨 아래 셀과 그 위의 셀에서 output1과 output2를 비교하는 이유는 무엇인가요?

 

질문2.

맨 아래 셀에서 X @ layer_1.weight.T로 표기가 되어 있는데요. W @ X + b에 따라서 그 표기도, layer_1.weight @ X가 아닌지 궁금합니다. 만약 Transpose를 취하는 이유는 Weight가 T 이후에도 변하지 않기 때문인가요?

 

감사합니다.

답변 2

0

변정현님의 프로필 이미지
변정현
지식공유자

안녕하세요!

답변이 늦어져서 죄송합니다 ㅠㅠ

아래 인프런 AI 인턴의 답변이 맞습니다!

0

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

iklee님께서 질문하신 내용에 대해 답변드리겠습니다.

질문 1.
맨 아래 셀과 그 위의 셀에서 output1output2를 비교하는 이유는, 모델이 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가 모델의 연산과 일치하게 되어 결과가 동일해집니다. 이 때 가중치가 전치되는 것은 실제 데이터 구조의 해석에 있어서 변화하는 것이 아니라, 연산의 편의를 위해서만 활용되기 때문입니다.

도움이 되셨기를 바랍니다! 추가로 궁금한 점이 있으시다면 언제든지 질문해 주세요.

guide_image 이미지 출처

iklee님의 프로필 이미지
iklee

작성한 질문수

질문하기