목록기초 노트 (51)
플로라도의 data workout
1. Concept Drift정의 : 시간이 지남에 따라 타겟 변수인 출력값이 변하고, 그에 대한 분포가 변하는 현상, 즉 모델이 학습한 관계가 더 이상 미래 데이터에 적용되지 않는 경우 예시 : 예측하려는 고객의 행동 패턴이나, 주식 시장의 트렌드가 시간이 지나면서 달라지는 경우. 예를 들어, 한 시점에서는 고객이 A라는 상품을 선호했지만 시간이 지나면서 B라는 상품을 더 선호하게 되어 모델이 학습한 관계가 더 이상 유효하지 않게 되는 경우가 concept drift에 해당 문제 : 기존의 데이터로 학습한 모델은 잘못된 예측이나 의사결정을 할 수 있다. 2. Covariate Shift정의 : 입력 데이터의 분포가 변하지만, 타겟 변수인 출력값의 분포는 변하지 않는 현상. 예시 : 모델이 학습한 데이..
1.모델1-1. 가중치 로드 model.load(weight_path, map_location=device) # 코드 확인 1-2. 모델 객체 이동 확인 모델객체.to(device) # 코드 확인 1-3. 모델 평가모드 설정with torch.no_grad() 루프와 model.eval()모드 확인 2. tensor이동'data(tensor).to(device)' 코드 확인 3. nn.DataParallel 삭제멀티-GPU 환경에서 학습한 스크립트 일부를 이용할시, 추론단계에서는 'nn.DataParallel' 관련 코드 삭제 model.to('cuda')model = nn.DataParallel(model)model.to('cuda') 과 의 model의 state_dict의 key값은 상이하..
(거의) 모든 것 파이토치의 DataLoader 클래스는 데이터셋을 다루기 위한 강력한 도구로, 모델 학습을 위한 배치(batch)를 생성하고 데이터를 불러오는(load) 작업을 관리하는 기능을 한다.각각의 인자(arugment)들은 데이터로더의 설정을 돕게 된다. DataLoader- Dataset에 대하여 data를 로드하는 iterative한 객체- 아래와 같은 argument를 받음import torchfrom torch.utils.data import Dataset, DataLoader, SequentialSampler, RandomSampler, SubsetRandomSampler, BatchSamplerDataLoader(dataset, batch_size=1, shuffle=False, s..
파이썬에서는 이미지 입출력(image I/O)를 처리하는 정말 많은 라이브러리와 함수들을 제공하고 있다. 특별히 opencv를 사용하면 이미지를 RGB의 형태가 아닌 BGR의 형태로 읽어 색상값이 뒤직박죽 섞여 이를 적절히 섞어줘야 한다던가 하는 테크닉이 필요한 것은 알았지만,이미지를 로드하는 라이브러리와 함수에 따라 이미지 픽셀값의 분포가 다르다던지(1), EXIF라고 하는 사진의 메타 데이터의 반영여부가 달라진다던지(2) 하는 차이점을 최근에서야 알게 되었다. 1. PIL/Pillow- PIL(Python Imaging Library)의 후속으로 유지보수 되고 있는 라이브러리, 원래의 라이브러리는 Python 1.5-2.7을 지원하며, 2011년 PIL 저장소에 대한 마지막 커밋으로 중단되어 Pi..
Object detection 논문에서 'Box regression' 이라는 표현이 등장하곤 하는데, 매번 등장할때마다 대충 넘어갔던 개념! 앵커박스와 바운딩박스의 이해를 바로 잡고자한다. 왜인지는 모르겠으나 필자 같은 경우 여기서의 Box를 당연히 (Bounding)Box Regression으로 생각했고, 이 때문에 이해가 뒤죽박죽이 되었다. Bounding-box Regression라고 이해한다면, 바운딩 박스의 Regression일까? 바운딩 박스로의 Regression일까? 주체인걸까 대상인걸까? 이것만 명확히해도 사실 헷갈릴 게 없었다. 필자는 'Box Regression'이라는 표현을 마주했을때 Box가 주체적인 단어라고 생각을 했기에 이러한 관점에서의 Box Regression은 사실 (An..
판다스 데이터프레임의 인덱싱은 크게 세가지 방법이 있다. 1. ' [ ] ' 연산자2. iloc '위치 기반 선택'3. loc '라벨 기반 선택' 1. '[ ]' 연산자 @ka : 칼럼지정 연산자, 행 슬라이싱, 불리언 인덱싱데이터프레임에 ' [ ] ' 연산자를 적용, df ['column_name'] 와 같이 사용하는 것은 기본적으로 여느 다른 클래스와 마찬가지로 매직 메서드인 '__getitem__'에 의해 구현되어 있다. - 열 선택 df['column_name'] - 슬라이싱을 통한 행 선택df[2:5] 이때 유의점1은 df[3] 과 같이 단일 정수값으로 행을 선택하려고 들면 에러가 난다는 점이다. 데이터 프레임에서 ' [ ] ' 연산자는 '칼럼 지정 연산자'로 작동하며, 열 이름 자체가 '..
딥러닝에서 대규모의 모델을 다룰수록 scratch부터 모델을 학습시키는 경우는 잘 없고,기존의 대규모 데이터셋과 GPU Cluster로부터 사전에 학습된 pre-trained 모델을 활용하여 모델링을 하는 경우가 대부분이다. 그 활용 방법이 바로 Transfer Learning과 Fine-tuning이다.Transfer Learning과 Fine tuning은 서로 연관되어 있지만 사용 방식과 사용 맥락에 약간의 차이가 있다. Transfer Learning(전이학습)전이학습(Transfer Learning)은 한 도메인 또는 다른 task에서 학습된 모델을 취하여 다른 도메인이나 task에 적용하는 방식이다.예를 들어, 이미지넷으로 사전 훈련된 모델(ImageNet 21k분류를 위한 모델)을 새로운 ..
이번 강은 Attention에 대해서 다룬다. 지난 시간에는 새로운 구조의 NeuralNet인 RNN에 대해서 배웠다. RNN은 서로 다른 시퀀스의 벡터를 다룰 수 있는 강력한 신경망 구조였다.MLP와 같은 일반적인 Feedforward neural network(순방향 신경망)에서 Recurrent Neural Networks(순환 신경망)로 오면서 우리는 machine translation, image captioning과 같은 다양한 테스크를 해결할 수 있게 되었다. 지난 시간의 내용을 다시 한번 떠올려보자.sequence to sequence with RNN의 문제는 무엇이었을까RNN은 $x_1$에서 $x_T$까지의 sequence를 입력으로 받는다. output은 $y_1$에서 $y_{T^`..
딥러닝 모델들의 논문을 보다 보면 벤치마크 표에서 제시되는 것이 크게 네가지가 있는데, 학습 방법및 하이퍼파라미터 튜닝과 모델 버전에 따른(1)모델의 이름,그리고 task에 해당하는 성능지표를 통해 측정한 (2)정확도와(3)파라미터의 갯수, (4)FLOPs 가 그것이다. 모델의 정확도와 효율성은 일반적으로 trade-off관계에 있기 때문에, 정확도 뿐만 아니라 파라미터의 갯수와 FLOPs로 모델의 효율성을 같이 나타내려고 한다.이 때 모델의 효율성은 파라미터의 갯수와 FLOPs 두가지로 나타내게 되는데 파라미터의 갯수는 모델의 가중치(weight)와 bias term을 모두 포함한 수를 의미하고, 대게는 모델의 capacity를 의미하며 모델의 학습관점에서는 VRAM과 직접적으로 연관되는 부분이다. ..
파이토치에서 torch.nn.functional모듈은 통상 F로 임포트하여 사용되곤하는데이때 nn모듈의 클래스들과 비교가 된다. 예를 들면, F.avg_pool2d와 nn.AvgPool2d는 정확히 동일한 기능을 제공하지만, 두 함수의 사용 방법과 적용하는 컨텍스트에는 차이가 있다. 1.F.avg_pool2d- 모듈 : torch.nn.functional - 특징 : 1. 매 호출마다 풀링 파라미터를 지정해야 하므로, 동적인 풀링 사이즈나 조건에 따른 풀링을 적용해야 할때 사용한다. 2. 함수형 API를 사용하므로, 코드에서 '절차적' 접근을할때 적합하다. 3. 상태가 없는 절차적 함수이므로 nn.Sequential의 구성요소로 추가될 수 없다. - 사용 예import torchimport torch..