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

강현구님의 프로필 이미지
강현구

작성한 질문수

[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지

pytorch custom layer

작성

·

856

1

안녕하세요! pytorch library에 대한 질문이 있습니다.

저희는 pytorch로 모델을 구현할 때, nn.Module 오버라이딩하여 사전에 존재하는 모듈을 사용하여 모델을 구축합니다. 예를들어 lstm 같은 경우, 파이토치에 이미 lstm block이 구현되어있어서 그대로 가져다 씁니다.

만약 제가 직접 파이토치 상에서 layer를 직접 구축하고 싶을 때, 어떻게 구축해야하는지 궁금합니다. 파이토치 상에서 구현되지 않은 알고리즘을 파이토치로 구현하고 싶습니다.

혹시 참고할 만한 레퍼런스가 있다면 뭐든 너무 감사드립니다.

답변 1

0

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

안녕하세요.

일반적으로 class를 이용하여 모델을 정의합니다.

이 강의의 마지막에서 모델을 직접 정의하는 것을 보실 수 있구요.

다른 강의 "최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지"에서는 비전 트랜스포머 모델을 처음부터 끝까지 만듭니다.

추가적으로 구글 검색 하셔도 되구요 :)

감사합니다.

 

강현구님의 프로필 이미지
강현구
질문자

감사합니다! 혹시 말씀 주신 강의에 네트워크 안에 nn.conv2d나 nn.linear 이런 layer들로 네트워크를 구성을 하게 되는데, 해당 layer 자체를 만드는 것, 그리고 layer 내부의 파라미터(wieght 등)를 freeze한다거나 train하는 등 layer 자체에 대한 딥다이브를 진행하시는지 궁금합니다.

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

layer 자체의 weights을 정의하고 싶으시면 nn.Parameter를 이용하여 class를 만들면 됩니다!!

강현구님의 프로필 이미지
강현구
질문자

감사합니다...! 그렇다면 여러 weight들이 존재할 때 nn.Parameter로 정의해준후, 처음에 랜덤한 값으로 weight를 정의하고 특정 weight는 수정하고 어떤 weight수정을 하고싶지 않다면 어떻게 해야할까요...?

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

말씀하신 "수정"이라는게 학습 시 파라메터 업데이트가 된다는 의미이신가요? 고정된 값을 사용하고 싶으시면 torch.FloatTensor와 같은 텐서를 사용하셔도 되고 Parameter를 사용하는 경우인데 고정하고 싶으면 해당 변수에 대해서만 requires_grad를 False로 해주시면 됩니다. 혹시 이제 기본을 배우셨다면 파이토치가 어느정도 숙달 되신 후에 도전하는 것을 추천드립니다. 커스텀할 때 고려해야 할 점이 많습니다. 열공하세요!!

강현구님의 프로필 이미지
강현구

작성한 질문수

질문하기