일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- CT
- procedure
- AWS
- ml
- kernel
- Emoji
- https
- Map-reduce
- coursera
- FSL
- object detection
- 평가지표
- pm2
- git
- Anaconda
- pytorch
- error
- ssl
- x-ray
- ubuntu
- NRMSE
- 동차좌표계
- relaxation time
- nodejs
- Cost Function
- Homogeneous Coordinates
- EC2
- MySQL
- MRI
- Dual energy X-ray
- Today
- Total
목록Machine Learning (8)
Pay it Forward
Pytorch를 사용하여 모델을 돌리던 중, augmentation으로써 RandomRotation을 사용하고, 이미지가 돌아갔을 때(rotate) 생기는 여백의 공간을 0으로 채우기 위하여 아래와 같이 코드를 작성하였다. from torchvision import transforms as transforms trans = transforms.RandomRotation(degrees=args.aug_degree, fill = (0,)) img_trans = trans(img) 그러나 다음과 같은 에러를 맞이하였다. UserWarning: Argument fill/fillcolor is not supported for Tensor input 알아본 결과 해결방법은 아래와 같다. Torchvision ver..
Neural network를 train을 하다보면 성능을 비교하기 위해 loss function, optimizer 등이 상이한 여러 가지 model을 돌려볼 일이 수도 없이 많다. 이 때, 한 장의 GPU만 있다면 어쩔 수 없지만 여러장의 GPU가 존재한다면 A model은 GPU 0번에서, B model은 GPU 1번에서 동시에 두 개의 model을 돌려 빠르게 결과를 보고 싶을 것이다. 이를 위하여 각 model을 특정 GPU에서 돌리는 법을 알아보고자 한다. 추가적으로, network의 weight param이 크거나 input dataset의 크기가 커서 하나의 GPU memory로는 model을 돌리기에 부족하여 CUDA out of memory error가 뜨는 경우가 많다. 이를 해결하기 ..
Pytorch-torchvision의 transforms 라이브러리를 사용하여 Data augmentation을 진행하던 도중 마주친 에러. TypeError: function takes exactly 1 argument (3 given) Stack overflow에 따르면 torch와 Pillow version의 호환문제로 인해 발생한 것으로, 다음과 같이 fill = (0,) 을 RandomRotation 함수에 추가하여 해결할 수 있다. aug_methods = transforms.RandomRotation(30, expand=False, fill=(0,)) 아래는 코드 전문.
classification의 평가지표로서 굉장히 많은 값들이 존재한다. 흔히 알고 있는 평가지표로는 정확도가 있는데, 정확도만으로는 classification의 성능을 정확히 판단하기 힘들다. 이유를 간단히 예를 들면 다음과 같다. 더보기 시험출제자가 10문제의 ox문제를 출제한다고 했을 때, 9문제의 정답을 o로하고 단 한문제를 x로 출제하였다고 가정하자. 이 때, 우리가 어떤 문제에 대해서든 정답을 o로만 말하는 model을 만들었다고 한다면 올바른 model이 아님에도 불구하고 위의 문제를 풀었을 때, 정확도가 90% 달하게 된다. 따라서 정확도(accuracy)만을 평가지표로 삼는 것은 model 성능 평가로서 부적합하다. 따라서 정밀도(Precision), 회수율(Recall)등의 metric들..
동차좌표계는 뭘까? 컴퓨터그래픽스 분야 및 OpenGL에서 주로 나오며 본인의 경우 X-ray를 공부하다가 접하게 된 개념으로, 위키백과에 따르면 Homogeneous Coordinates(=Homogeneous Space)는 다음과 같이 정의되어 있다. " n차원 사영 공간을 n+1개의 좌표로 나타내는 좌표계 " 위의 정의에 단순히 숫자 3을 대입해보면, 3차원 사영공간을 4개의 좌표로 나타낸다고 볼 수 있다. 이 4개의 좌표를 $(x, y, z, w)$라고 하자. 3차원을 나타내므로 $x, y, z$는 각각 x좌표, y좌표, z좌표를 나타낼 것이다. 그렇다면 $w$는 무엇을 나타낼까? $w$가 0이라면 선(vector)을, 1이라면 점(point)를 의미한다. "$w = 0$" means "$(x, ..
ROC curve (Receiver Operating Characteristic curve) ROC curve는 classification에서 자주 사용되는 evaluation metric이다. (엄밀히 말하면 AUC가 자주 사용된다.) 항상 직관적으로 줄임말의 어원을 통해 해당 단어의 성질을 파악하고자 노력하는데, ROC는 잘 파악이 안된다. 그래도 막무가내로 파악을 해보자면.. 병이 있다고(Positive) 혹은 없다고(Negative) 판단을 하였을때, receiver가 어떻게 판단하여 작동할지를 표시해 놓은 curve... 가 될지 모르겠다. 괜히 직관적으로 이해해보려 한걸지도 ^^; 쨋든, ROC는 Sensitivity와 Specificity의 관계를 그래프(curve)로 나타낸 것이다. (Se..
KNN 알고리즘이란? KNN은 k-Nearest Neighbors의 약자로 1-NN의 단점을 보완한 알고리즘입니다. 1-NN 알고리즘 분류하고자 하는 입력값에 대하여 해당 입력값과 가장 유사한 값 1개를 입력값에 대한 결과로 선정하는 알고리즘. 가장 유사한 값 1개만을 결과 도출에 활용하므로 잘못된 데이터와 같은 noise에 취약합니다. 위와 같이 1-NN은 유사한 값 1개만을 결과 도출에 활용하지만 k-NN 알고리즘은 여러개(k개)의 결과를 활용하므로 잘못된 데이터에 대한 민감도가 적어진다는 장점이 있습니다. 즉, 1-NN은 잘못된 데이터가 입력 데이터와 제일 유사하면 잘못된 결과값을 제시하기에 여러개의 데이터를 통해 결과를 산출하는 k-NN 알고리즘이 더욱 신뢰가 가는 결과를 반환합니다. 예를 들어,..
수많은 ML 분야 중에서도 Object Detection 분야의 논문에서 자주 등장하는 모델의 성능평가지표인 mAP. 아직은 계속 용어가 헷갈리고 의미가 불확실해 정리해보았다 mAP (mean Average Precision) AP는 precision과 recall을 그래프로 나타냈을 때의 면적이다. precision : 모델이 정답이라고 답한것들(아래 그림의 파란 박스) 중, 실제로 맞은(TP) 비율 recall : 실제 정답들(아래 그림의 빨간 박스) 중에서 내가 정답이라고 말한 비율 각 class마다 한 AP를 갖게 되는데 모든 class의 AP에 대해 평균값을 낸 것이 바로 mAP(mean AP)이다. 즉, 모든 class에 대하여 Precision/Recall의 값을 avg취한 것이라고 볼 수 ..