| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- VS Code
- C++
- label
- nvidia-smi
- 명령어
- C#
- 오류
- Numpy
- 프로그래머스
- YOLO
- SSH
- JSON
- 채보
- OpenCV
- Docker
- windows forms
- Labelme
- C
- pip
- pytorch
- 컨테이너
- Python
- pandas
- Linux
- paramiko
- ubuntu
- error
- Visual Studio
- Selenium
- mysql
- Today
- Total
목록Python (123)
기계는 거짓말하지 않는다
PyTorch에서 추론 코드를 작성할 때 torch.no_grad와 torch.inference_mode를 사용할 수 있다.두 기능은 모두 gradient 계산을 막는 용도로 사용할 수 있지만 완전히 같은 기능은 아니다.또한 model.eval()과도 역할이 다르다.model.eval()model.eval()은 모델을 평가 모드로 변경한다.Dropout, BatchNorm처럼 train mode와 eval mode에서 동작이 달라지는 module에 영향을 준다.하지만 model.eval()은 gradient 계산을 끄는 기능이 아니다.import torchfrom torch import nnmodel = nn.Sequential( nn.Linear(4, 8), nn.ReLU(), nn.D..
Labelme에서 이미지 폴더를 열었는데 jpg 파일이 보이지 않는 경우가 있다.분명히 폴더 안에는 jpg 이미지가 있는데 Labelme에서는 이미지를 찾지 못하거나, 이미지 목록에 jpg 파일이 표시되지 않는 상황이다.Labelme 자체 문제라기보다는 PyQt5의 Qt image plugin 경로 문제였다.즉, PyQt5에서 jpg, jpeg 포맷을 읽을 수 있는 plugin을 제대로 찾지 못해서 Labelme에서도 jpg 이미지를 인식하지 못한 것이다.1. 문제 상황Labelme를 실행한 뒤 jpg 이미지가 들어있는 폴더를 열었는데 이미지가 정상적으로 보이지 않았다.이런 경우 먼저 폴더 경로, 파일 확장자, 파일 손상 여부를 확인할 수 있다.하지만 파일 자체에는 문제가 없는데도 jpg 이미지만 보이지..
Python logging 모듈에서 로그 파일 크기를 제한하는 예시이다.FileHandler를 사용하면 로그 파일이 계속 커질 수 있다.로그 파일 크기를 기준으로 파일을 나누려면 logging.handlers의 RotatingFileHandler를 사용하면 된다.기본 예시아래 코드는 로그 파일 크기가 10MB에 가까워지면 파일을 분리한다.backupCount가 5이므로 기존 로그 파일은 최대 5개까지 보관된다.import loggingfrom logging.handlers import RotatingFileHandlerimport datetimeimport osdef setup_rotating_logger( log_file_name="process.log", log_name="logger", ..
PyTorch에서 모델 파일을 불러올 때 발생할 수 있는 weights_only 관련 오류이다.PyTorch 2.6부터 torch.load에 pickle_module 인자를 넘기지 않으면 기본적으로 weights_only=True가 사용된다.따라서 예전에 저장한 checkpoint에 Tensor 외의 Python 객체가 포함되어 있으면 아래와 같은 오류가 발생할 수 있다._pickle.UnpicklingError: Weights only load failed.WeightsUnpickler error: Unsupported global: GLOBAL ...weights_only=True는 torch.load에서 사용하는 unpickler를 제한한다.Tensor, primitive type, dictiona..
W&B를 사용하다보면 login 과정에서 아래와 같은 오류가 발생할 때가 있다.wandb: ERROR API key must be 40 characters long, yours was 58또는 환경에 따라 아래처럼 API key 길이가 다르게 표시될 수도 있다.wandb: ERROR API key must be 40 characters long, yours was 86처음에는 API key를 잘못 복사한 것처럼 보일 수 있다.하지만 실제로는 wandb SDK 버전이 오래되어 새 API key 길이를 제대로 처리하지 못하는 경우가 있다.1. 오류 상황예를 들어 W&B에서 API key를 발급받은 뒤 아래처럼 로그인한다고 가정한다.wandb login그 다음 API key를 붙여넣었을 때 아래와 같은 오류가..
Python에서 실행 파일에 option을 전달할 때 argparse를 자주 사용한다.예를 들어 학습 코드에서 GPU 사용 여부, 저장 여부, debug mode 등을 command line argument로 받는 경우가 많다.python train.py --use_gpu --save_model이때 boolean 값을 받기 위해 아래처럼 작성하는 경우가 있다.import argparseparser = argparse.ArgumentParser()parser.add_argument("--use_gpu", type=bool)args = parser.parse_args()print(args.use_gpu)하지만 type=bool은 의도와 다르게 동작할 수 있다.1. type=bool 문제아래 코드를 실행한다고..
PyTorch의 forward() 연산 방식은 기본적으로 순차적으로 실행되는 것처럼 보이지만, 내부적으로 가능한 연산을 병렬로 실행한다. 특히 GPU에서는 연산이 비동기적으로 수행될 수 있고병렬 처리를 더욱 효율적으로 활용할 수 있다.연산 그래프PyTorch에서 forward() 실행 시 생성되는 연산 그래프(Computation Graph)는동적 방식(Dynamic Computation Graph)으로 작동한다.이는 모델의 forward pass 과정에서 연산이 발생할 때마다 그래프가 즉시 생성되는 방식이다.연산 그래프의 특징동적 생성(Dynamic Graph)TensorFlow의 정적 그래프(Static Graph)와 달리, PyTorch는 실행 시점에서 그래프를 즉시 생성한다.따라서 모델 구조를 유..
Python의 tracemalloc은 코드에서 메모리 할당을 추적할 수 있도록 도와주는 기본 모듈이다.가장 많은 메모리를 할당하는 5개의 파일을 표시한 출력 형식은 아래와 비슷하다./home/user/test.py:1817: size=18.2 MiB, count=556, average=33.5 KiB:672: size=438 KiB, count=4584, average=98 B/usr/lib/python3.10/threading.py:258: size=417 KiB, count=1384, average=309 B:241: size=175 KiB, count=1871, average=96 B/usr/lib/python3.10/queue.py:207: size=144 KiB, count=467, averag..