| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- mysql
- Selenium
- Python
- SSH
- C
- Visual Studio
- ubuntu
- 프로그래머스
- VS Code
- pytorch
- 컨테이너
- YOLO
- 채보
- C++
- pandas
- OpenCV
- 오류
- Labelme
- pip
- 명령어
- error
- Linux
- Numpy
- nvidia-smi
- paramiko
- Docker
- windows forms
- JSON
- C#
- label
- Today
- Total
목록전체 글 (347)
기계는 거짓말하지 않는다
Python에서 작업을 Queue에 넣고 다른 실행 단위에서 처리하려고 할 때 queue.Queue와 asyncio.Queue를 사용할 수 있다.두 Queue의 사용 방법은 비슷하지만 사용하는 실행 구조가 다르기 때문에 상황에 맞게 선택해야 한다.1. queue.Queue와 asyncio.Queue 차이queue.Queue는 여러 thread 사이에서 데이터를 안전하게 전달하기 위한 Queue이다.내부적으로 thread 간 동기화를 위한 locking 처리를 제공하므로, 하나의 thread에서 작업을 생성하고 다른 thread에서 처리하는 구조에 사용할 수 있다.asyncio.Queue는 async/await 기반으로 동작하는 여러 비동기 Task 사이에서 데이터를 전달하기 위한 Queue이다.async..
직접 구매해서 사용한 후기입니다. 지금까지 계속 샴푸를 바꿔왔었는데, 한 번씩 보이는 비듬이 신경 쓰여서 이번에는라보에이치 댄드러프클리닉 샴푸 400ml 제품을 사용해 봤습니다. 기존에 사용하던 샴푸로는 비듬이 크게 줄어드는 느낌이 없어서 비듬용 샴푸를 찾아보다가 구매했습니다.사용했을 때 두피에 살짝 화한 느낌이 있었습니다.따갑거나 자극적이라는 느낌보다는, 머리를 감을 때 두피가 시원해지는 청량한 느낌이었습니다. 개인적으로 가장 만족했던 부분은 비듬이 눈에 띄게 줄어든 점입니다.저는 사용 후 일주일 안에 비듬이 많이 줄어든 것을 느꼈습니다.기존에는 머리를 감고 나서 머리를 빗을때도 신경쓰였는데, 이 제품을 사용한 뒤에는 그런 부분이 확실히 줄었습니다.두피 상태는 사람마다 다르기 때문에 모든 사람에게 같은..
Python에서 설정값이나 간단한 데이터 구조를 만들 때 일반 class를 사용할 수 있다.하지만 단순히 값을 저장하는 용도라면 매번 __init__, __repr__ 같은 메서드를 직접 작성하는 것이 번거롭다.이럴 때 Python 표준 라이브러리의 dataclass를 사용할 수 있다.1. 일반 class로 작성하는 경우예를 들어 학습 설정값을 저장하는 클래스를 일반 class로 만들면 다음과 같이 작성할 수 있다.class TrainConfig: def __init__(self, model_name: str, batch_size: int, image_size: int): self.model_name = model_name self.batch_size = batch_size..
PyTorch로 모델을 학습할 때 GPU 메모리가 부족하거나 학습 속도를 조금 더 개선하고 싶을 때 AMP를 사용할 수 있다.AMP는 Automatic Mixed Precision의 약자로, 일부 연산은 float16 같은 낮은 정밀도로 수행하고, 필요한 연산은 float32로 유지하는 방식이다.이 글에서는 CUDA 환경에서 torch.amp.autocast와 torch.amp.GradScaler를 사용하는 기본 형태를 정리한다.1. AMP를 사용하는 이유딥러닝 모델 학습에서는 대부분 float32를 사용한다. float32는 안정적이지만, GPU 메모리 사용량이 크고 연산량도 많다.AMP를 사용하면 일부 연산을 float16으로 처리할 수 있어 GPU 메모리 사용량을 줄일 수 있고, 환경에 따라 학습 ..
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..