inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

[실습] Fully Connected NN 만들기

2-8 fully connected NN answer 코드 중 torch.nn.Linear 질문드립니다!

해결된 질문

369

nanki

작성한 질문수 3

1

안녕하세요. 강의 잘 듣고있습니다 :D

아래 코드에서 torch.nn.Linear에 해당하는 부분이 강의서 말씀해주신 aggregation에 해당되는 부분일까요? 편의상 bias 벡터는 생략된걸까요..?

class Model(torch.nn.Module) :
    def __init__(self) :
        super(Model, self).__init__()
        self.layers = torch.nn.Sequential(
            # 첫번째 레이어
            torch.nn.Linear(in_features = 128,
                                out_features = 64,
                                bias = True),
            # 첫번째 레이어의 activation 함수
            torch.nn.Tanh(),
            
            # 두번째 레이어
            torch.nn.Linear(in_features = 64,
                                out_features = 16,
                                bias = True),
            # 두번째 레이어의 activation 함수
            torch.nn.Tanh(),
            
            # 세번째 레이어
            torch.nn.Linear(in_features = 16,
                                out_features = 1,
                                bias = True),
            # 세번째 레이어의 activation 함수
            torch.nn.Sigmoid() 
        )
        
    def forward (self, x) :
        return self.layers(x)

딥러닝 pytorch NLP 컴퓨터-비전 cnn rnn transformer llm

답변 1

2

변정현

안녕하세요,

변정현입니다.

강의를 잘 수강하고 계시다니 저도 뿌듯하네요. 감사합니다.

좋은 질문들 주셔서 감사합니다.

  1. 아래 코드에서 torch.nn.Linear에 해당하는 부분이 강의서 말씀해주신 aggregation에 해당되는 부분일까요?

torch.nn.Linear은 Weight Multiplication과 Aggregation 둘 다 포함합니다.

섹션 6의 첫번째 Ppt의 22번째 슬라이드 "Forward Pass as Matrix Multiplication"을 보시면 Weight Multiplication 및 Aggregation이 Matrix Multiplication으로 표현된다는 것을 확인할 수 있습니다.

그리고 섹션 2-8 실습편을 보시면 torch.nn.Linear은 사실상 Weight Matrix 곱하기 Input 더하기 Bias로 구성되는 것을 확인할 수 있습니다.

image

  1. 편의상 bias 벡터는 생략된걸까요..?

네 편의상 Bias을 생략한 것은 맞습니다.

하지만 한가지 참고사항으로 말씀드리자면,

Input X에 차원수를 하나 추가해서 새로운 차원은 1의 값을 가진다고 가정해보겠습니다.

즉, X' = concat( [ X, 1 ] ) 이 되는 셈입니다.

그러면 W X + b 은 사실상 W' X'으로 표현할 수 있습니다. 여기서 W'은 W 행렬에 bias b을 마지막 row로 가지는 행렬입니다.

부연 설명드리자면 W이 M by N 행렬이면 W'은 (M+1) by N 행렬입니다.

1~M번째 row은 W 행렬과 동일하고 마지막 M+1번째 row은 bias vector B 값인 셈이죠.

즉, W' = concat( [ W, b ] ) 입니다.

이렇게 W'과 X'을 정의해서 W' X' 을 곱해보시면 WX + b의 결과와 동일하다는 것을 확인하실 수 있습니다.

따라서 편의상 bias b을 생략한 것은 맞지만 WX + b도 결국에는 WX 와 같은 꼴로 표현될 수 있다는 의미입니다 ㅎㅎ

그래서 딥러닝 논문들이나 교과서들을 보시면 Bias B 를 따로 구분하지 않는 경우가 많습니다.

 

감사합니다.

1

nanki

답변 감사드립니다! 큰 도움이 되었습니다!!

노션URL 이동문제

0

56

1

섹션12 실습코드 의 initialization 각각 적용 코드 문의

0

97

0

오타

0

82

0

혹시 이론강의 자료도 공유가 가능하실까요?

1

166

1

[sec. 2-8 실습] 배치사이즈의 선택

0

171

2

[section 14 / [실습] 직접 만든 CNN 모델과 ResNet, VGGNet을 활용한 CV 프로젝트] transforms.Normalize 질문

1

226

1

[section 14 / VGGNet ] receptive filed 질문

1

131

2

[섹션3, PyTorch로 구현해보는 Loss Function] 분류task loss함수 질문입니다.

1

231

2

KL Div Loss에서 Negative Entropy를 더해주는 의미에 대해서

1

193

2

GoogleNet Inception 모듈

1

166

2

Batch Normalization 효과

1

183

2

Layer Norm이 언어모델에 적합한 이유

1

520

1

9-2 fully connected NN

1

129

1

Mini-batch Gradient Descent computation time 질문

1

175

2

Huber Loss에 대한 질문

1

303

2

Batch size 가 극단적으로 작은 경우 (예를들어 batch_size =1) Normalization 적용 방안

3

351

1

Normalization 질문

1

270

2

Section 7 [Activation Function의 종류] Softmax logit 분포와 Entropy 질문이 있습니다

2

210

1

Section 3 [실습] PyTorch로 구현해보는 Loss Function의 Cross Entropy 구현 관련하여 질문이 있습니다.

1

299

1

Section 3의 [이론] Regression task의 Loss: L1, L2, Huber, Log Cosh Loss "미분가능"관련 에서 질문이 있습니다.

1

280

1

Section 15 실습 중, lstm 클래스의 forward 함수 질문

1

236

2

Section 16 [이론] Transformer의 Encoder 질문

1

177

1

Auto Differentiation에서 computational Graph 질문있습니다

1

212

1

Section 3 이론 classification Loss function 질문

1

235

1