inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]

실제 캐글(Kaggle) 문제 풀고, 제출해보며, 성능 개선 기법 익히기8

실제 캐글 문제 풀고 제출해보며 성능 개선 기법 익히기8 강의에서 질문입니다

해결된 질문

198

vpdtlrdl

작성한 질문수 45

0

실제 캐글 문제 풀고 제출해보며 성능 개선 기법 익히기8 강의의 3:20 부분에서 궁금한 점이 있어 질문 올립니다.

 

해당 코드에서는 저장된 model_efficientnet-b7_without_scheduler_adam_1e5_epoch20.pth 모델을 load할 때,

 

model_efficientb7 = deepcopy(model) 
PATH = '/content/drive/MyDrive/Colab Notebooks/Dataset/Dogs vs Cats/'
model_efficientb7.load_state_dict(torch.load(PATH + 'model_efficientnet-b7_without_scheduler_adam_1e5_epoch20.pth'))

다음과 같이 model의 뼈대를 다시 구성한 후, load_state_dict 메소드를 이용하여 가중치 값을 업데이트 하였습니다.

 

이때,

model_efficientb7 = deepcopy(model) 

와 같이 그냥 model 객체가 아닌,

deepcopy(model)을 사용한 특별한 이유가 있는지 궁금합니다.

 

deepcopy를 사용할 경우,

'model_efficientb7'과 'model' 객체는 서로 독립적인 객체로 유지된다는 점은 파악할 수 있었는데요,

model_efficientb7에 적용되는 변화와는 별개로 model 객체 자체를 유지하려는 의도에서 사용한 것이라고 보면 되는지 여쭙고 싶습니다!

머신러닝 딥러닝 인공신경망 pytorch vision-transformer

답변 1

0

잔재미코딩 DaveLee

안녕하세요. 답변 도우미입니다.

우선 말씀하신 부분이 맞습니다.

deepcopy를 사용하는 주된 이유는 원본 객체와 완전히 분리된 새 객체를 만들기 위해서입니다. 이 경우, model_efficientb7 객체에 가중치를 로드하더라도 원본 model 객체에는 영향을 주지 않습니다.

파이토치(PyTorch)에서 모델의 가중치를 로드할 때 load_state_dict 메소드를 사용하는데, 이 메소드는 원본 모델 객체의 파라미터를 로드한 가중치로 업데이트합니다. 만약 원본 모델 객체에 직접 load_state_dict를 사용하면, 그 객체가 나중에 다른 목적으로 사용되어야 할 때 문제가 발생할 수 있습니다. 예를 들어, 여러 가지 가중치를 실험해보거나, 기존 모델을 바탕으로 추가 학습을 진행하는 등의 경우에 원본 모델을 보존하는 것이 중요할 수 있습니다.

따라서, deepcopy를 사용하여 원본 모델 객체를 복사하고, 이 복사본에 새로운 가중치를 로드하면, 원본 모델은 그대로 유지되면서 다른 가중치로 실험을 계속할 수 있는 장점이 있습니다. 이러한 접근 방식은 모델의 상태를 다양하게 변형시켜가며 실험하는 머신러닝의 흔한 시나리오에 유용합니다.

결론적으로, deepcopy를 사용함으로써 model_efficientb7에 가중치를 로드하더라도 원본 model 객체의 상태를 변경하지 않고 유지할 수 있기 때문에, 이후에 model 객체를 다른 목적으로 사용하고자 할 때 유연성을 보장받을 수 있습니다.

감사합니다.

강의 필기는 어떻게 하나요?

0

83

1

섹션 5퀴즈 4번 문제 보기 오류로 보임

0

62

1

섹션17 81번이랑 82번 강의가 중복되는 것 같아서 질문드립니다.

0

88

2

강의교안이 안 옵니다

0

78

1

17-2강 Transfer learning 실습 관련 질문

0

134

2

13섹션 강의자료가 없네요^^

0

91

1

강의자료가 없네요.

0

104

2

LSTM 모델 학습 관련한 질문입니다.

0

127

1

MSE LOSS 관련

0

130

1

test시 minibatch 사용?

0

133

1

Average Test loss 계산식 문의

0

101

1

파이토치 설치

0

246

1

[Pytorch 기울기의 누적 곱? 누적 합?]

0

134

1

3d 텐서에서의 축 구분 질문

0

119

1

항상 tensor([0., 0., 0.]) 형식으로만 나오는 이유

0

111

1

강의자료 PDF 다운로드에 관하여

0

131

1

[실무에서 판다스 copy()메서드의 깊은복사 얕은복사 조정 소요가 생길까?]

0

116

1

섹션 다양한 Optimizer 정리하기 중 딥러닝으로 Regression 문제 적용해보기 (House Price Kaggle 문제) 강의에서 오류가 발생합니다.

0

148

1

마지막에 confusion matrix 작성할때

0

157

1

아나콘다를 사용하지 않고 파이토치 사용하는 방법

0

850

1

test data 의 loss 계산식 문의

0

287

1

차원 출력 관련 문의

0

244

1

섹션 7-4 당뇨병

0

386

3

BackPropagation 질문입니다

0

376

1