loss.backward 시의 역전파 범위가 어디까지인가요? 설정할 수 있나요?

안녕하세요,

이전번에도 많은 도움을 받았었는데 막힐 때 마다 다시 찾아오게 됩니다 ^^; 매번 감사드립니다.

-개요-
*CNN 네트워크를 통해 영상을 분류하고 있습니다.
*I3D model(as Feature Extractor) + FC layer → 영상 분류 구조 입니다.
*Feature extractor의 필터 까지 backward 해주어서 FC layer에 보다 나은 feature를 전달해주기를 바랍니다.

질문 1)
train 시에, backward가 Feature extractor 의 CNN 레이어의 필터까지도 업데이트 해주나요?
아니면, FC layer 내에서만 backward가 이루어지는 건가요?

질문 2)
만약 별도의 코드 설정으로 수정해줘야 되는 부분이라면, 모델의 CNN layer의 코드를 어떻게 수정해줘야 될까요…?

구글링 해보아도 backward 시의 범위와 그 범위를 설정하는 법을 모르겠네요…

감사합니다.

좋아요 1

아무설정이 없다면 기본적으로 모든 parameter의 gradient 가 계산이 되지만, 아래와 같은 방법으로
파라미터의 gradient 가 사용되지 않도록 할 수 있습니다.

for param in model.parameters():
    param.requires_grad = False

자세한 내용은 A Gentle Introduction to torch.autograd — PyTorch Tutorials 1.12.1+cu102 documentation 를 참조해보시면 좋을 것 같습니다.

좋아요 3