
2025.03.01
Chapter 5. Basic of Pytorch
39. Pytorch Mnist - 실습 140. Pytorch Mnist - 실습 2기본설정 :
Pytorch


Learning Rate의 역할


train_data를 보면, 60000개의 데이터가 있으며, 각 데이터는 28X28 의 픽셀값과 label 값이 있다.근데.. 커널이 죽는 현상이 발생해버림..
pytorch 커널이 죽는 현상 해결방안.
특히 imshow 코드 진행 시 커널이 죽음.

이 코드에서 사용된 os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'는 KMP (Intel Math Kernel Library) 관련 충돌을 해결하기 위해 설정된 것입니다. 주로 PyTorch와 matplotlib(특히 imshow와 관련된 그래픽 렌더링) 사이에서 충돌이 발생할 때 사용됩니다.
🔥 KMP_DUPLICATE_LIB_OK
KMP는 Intel의 멀티스레딩 라이브러리로, 주로 행렬 연산에 최적화된 라이브러리입니다.
KMP_DUPLICATE_LIB_OK는 KMP 라이브러리에서 중복 라이브러리 경고를 무시하도록 설정하는 환경 변수입니다.
PyTorch는 멀티스레딩을 사용하고, 이와 관련된 라이브러리들이 충돌할 수 있습니다. 특히 matplotlib과 함께 사용될 때, imshow()와 같은 함수에서 PyTorch의 멀티스레딩 처리와 충돌이 발생하는 경우가 있어요.
기본적으로 중복된 KMP 라이브러리가 로드되면 경고가 발생할 수 있습니다. 이때 * KMP_DUPLICATE_LIB_OK를 True로 설정하면 경고를 무시하고 중복된 라이브러리가 로드되도록 허용합니다.
🎯 결론
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'는 PyTorch와 matplotlib 또는 다른 라이브러리 간의 충돌을 피하기 위해 사용됩니다. 이 코드를 설정하면 충돌을 방지하고 경고 메시지를 무시하여 프로그램이 정상적으로 실행되게 할 수 있습니다.

조금 더 상세한 설명은 아래 블로그 참조
imshow 사용 시 커널죽는 현상
다시 보면...

train_data의 shape이 (1, 28, 28)이기 때문에 imshow 불가하다.squeeze() 코드를 실행하여 앞 채널 (1)을 삭제함으로써 imshow를 가능하도록 한다.


첫 번째 배치
first_batch = train_loader.__iter__().__next__()
두 번째 배치
second_batch = train_loader.__iter__().__next__()
세 번째 배치
third_batch = train_loader.__iter__().__next__()
근데.. 귀찮으면 ???
반복자 생성
train_iter = iter(train_loader)
첫 번째 배치
first_batch = next(train_iter)
두 번째 배치
second_batch = next(train_iter)
세 번째 배치
third_batch = next(train_iter)
사실 이거나 저거나 비슷하다..

import torch.nn.functional as F



test_loader 데이터로 평가진행

99% 정확도 ...