Pytorch #3

갱갱·2025년 3월 2일

ZB_TensorFlow & pyTorch

목록 보기
6/7
post-thumbnail

2025.03.01

Chapter 5. Basic of Pytorch

  • 39. Pytorch Mnist - 실습 1
  • 40. Pytorch Mnist - 실습 2



---

Pytorch MNIST - 실습 (1~2)

데이터 불러오기

기본설정 : Pytorch

  • Learning Rate의 역할
    • 학습률(learning rate)이란, 손실 함수의 기울기(gradient)에 얼마나 크게 또는 작게 곱할지를 결정하는 값이야.
    • 예를 들어, 기울기 값이 0.5라면, 학습률이 0.1이라면 가중치는 0.5 X 0.1 = 0.05만큼 수정될 거야.
    • 학습률이 0.01이라면 가중치는 0.5 X 0.01 = 0.005 만큼 수정되고, 학습률이 0.001이라면 0.5 X 0.001 = 0.0005만큼 수정돼.


  • pytorch MNIST에서 다운로드한 train_data를 보면, 60000개의 데이터가 있으며, 각 데이터는 28X28 의 픽셀값과 label 값이 있다.




근데.. 커널이 죽는 현상이 발생해버림..
pytorch 커널이 죽는 현상 해결방안.
특히 imshow 코드 진행 시 커널이 죽음.

이 코드에서 사용된 os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'는 KMP (Intel Math Kernel Library) 관련 충돌을 해결하기 위해 설정된 것입니다. 주로 PyTorchmatplotlib(특히 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를 가능하도록 한다.




batch 생성

  • 근데 두번쨰 batch를 확인하고 싶으면 ?...

첫 번째 배치
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



  • 학습진행 완료
  • 15번의 epoch이며, batch_size=50이니, 50개짜리 데이터셋트로 1200번 진행.
  • 15 X 1200 = 18000



평가

test_loader 데이터로 평가진행

99% 정확도 ...

profile
(hellow. world)

0개의 댓글