왜 seed에 따라서 모델 결과값이 달라지는 것인가요?
710
작성한 질문수 44
안녕하세요.
pytorch에 있는 imagenet.py 샘플 코드를 보고 있었는데, 궁금한 점이 있습니다
모델 훈련은 안하고, eval을 해서 샘플 이미지에 대해서 정확도를 계산해보려고 했습니다
제 생각에는 eval, no_grad이면 기본 가중치 값으로 이미지에 대해서 연산할 것 같은데, 파일을 실행할 때마다 달라지더라구요
그래서 --seed arg가 있어서 이를 실행했더니 아래 코드가 동작하는 것 같은데, 이때부터는 값이 고정되어서 나오는데
모델의 가중치 값이 고정되어 있는게 달라지는 것인가요? 아니면 어떤 변화 때문에 그런 것인지 혹시 아실까요? 감사합니다
답변 5
1
위 코드는 텐서를 CPU텐서로 할지 GPU 텐서로 할지 설정하는 부분이라 정확도에 대한 변화가 일어날 것 같진 않네요.
코드 리뷰를 하려면 전체적으로 보는게 맞는데 이 부분에 대해서는 수업 외 적인 부분이기 때문에 답변 드릴 수 없다는 것에 대해 먼저 양해 말씀 드립니다. ㅠㅠ
1
캡쳐 해주신 부분은 seed 활성화 부분만 있어서 저 것만 보고 판단할 수 없습니다. 다만 모델 가중치 값이 변할 수 있냐고 물어 보신 부분에 대해서 저장 된 모델 변수를 불러 올 단계에서는 항상 똑같다는 말씀을 드린 것이예요 :)
1
pretrained model이면 기존 모델 구조에 저장 된 파일로 부터 불러 온 가중치가 덮어 씌워지는 것이니까 항상 같은 값입니다. 다른 요인을 보셔야 할 것 같아요.
0
먼저 답변 감사합니다
네 코드를 읽어봤을 때 변화할 수 있는 부분에 대해서 생각해봤는데, 아래 코드들이 매번 코드들을 실행할 때마다 바뀌게 할 수 있는지 궁금합니다
1. cudnn.benchmark = True
2.
if args.gpu is not None:
images = images.cuda(args.gpu, non_blocking=True)
if torch.cuda.is_available():
target = target.cuda(args.gpu, non_blocking=True)
감사합니다
0
안녕하세요. 답변 감사합니다
제가 테스트 했을 때 seed 옵션을 적용하고 안하고에서 이러한 점을 발견했는데 위에 적혀있는 코드로는 그러한 점이 발생할 수 없다고 말씀해주신건가요?
수업자료 제공 부탁드립니다.
0
114
2
코드가 어디에 있는지 모르겠습니다.
0
114
2
논문 구현
0
208
2
overfitting이 나는 이유가 궁금합니다.
1
184
2
분류 성능이 잘 안 나오는 이유
0
226
1
AutoEncoder 차원 질문
1
258
2
사전 학습 모델에서의 layer 변경에 대한 질문
1
223
1
7강 폴더 만들
0
265
1
4-3강 cross-validation에서의 best model 선정 기준
0
460
1
regression 문제에 대한 결과 시각화
0
219
1
Loss function 관련하여 질문드립니다.
0
970
1
early stopping 코드 문의
0
331
1
예측 그래프
0
363
1
데이터 불균형
1
367
1
8강 전이 학습 질문
0
406
2
data의 gpu처리 질문
0
246
1
nn.Linear(1024, 10) 관련 질문드립니다.
0
296
1
학습과 평가시 Loss 함수가 다른 이유
0
254
1
전처리 관련해서 질문 있습니다.
0
230
1
데이터 엔지니어의 역량을 기르려면 어떻게 해야할까요?
0
947
2
역전파 내용 중 미분 관련 질문 드립니다
1
283
1
8강 전이학습에서 kernel size 관련 질문 드립니다.
1
966
1
이미지분류-합성곱신경망(CNN) 피쳐맵 질문입니다.
1
590
1
14강 데이터 불균형 RandomRotation
1
485
1





