Deep learning 43

Class imbalance (class weight, sample weight)

Class Weight Class weight는 전체 학습 데이터에 대해서 클래스별 가중치를 계산하는 방법으로 같은 클래스 내의 데이터 샘플은 같은 weight를 갖는다. 클래스 A에 해당하는 class weights는 sklearn이 제공하는 compute_class_weight 로 계산할 수 있다. 간단히 이야기하면 클래스별 샘플의 역수가 크 클래스의 weight가 된다. 이 방법 이외에 Sample Weight 개념적으로는 class weight와 동일하지만 전체 배치가 아니라 미니 배치 상에서 sample의 수를 고려해서 loss를 계산해주는 방법이다. . 아래의 블로그에서 소개한 방법은 크게 3가지이다 1. INS. (Inverse of Number of Samples) 배치 내에서의 sampl..

Deep learning 2021.08.18

SMOTE for imbalanced image dataset

imbalance 배치를 만들어서 학습을 시키는 와중, gpu 1장으로 다 돌아가지 않아서 OOM메모리 에러가 발생헀다.. 다른 해결 방법을 찾아야겠다. SMOTE 방법 ! 일단 image imbalanced data 문제에서 해결방법은 4가지로 볼 수 있다. 1. class weight 접근법 2. under-sampling 접근법 3. data augmentation for minority 클래스 4. Synthetic Minority Over-sampling Technique(SMOTE) 클래스 웨이트 접근방법의 경우는 마지막의 계산 부분에서 weight를 주는 것이기 때문에 이번 방법에는 제외하고 나머지 방법을 써서 해보겠다. SMOTE는 Oversampling technique로 minority..

Deep learning 2021.08.13

GAN(Generative Adversarial Network)

Discriminator 모델 - Supervised Learning —> input 데이터가 들어갔을 때 해당 Input 값이 어떤 것인지 Classify 하고 generator 모델은 어떤 latent code(잠재적인 코드)를 가지고 해당 데이터를 가지고 training 데이터가 되도록 학습하는 과정을 말한다. —> 보통 맞다 아니다의 이진분류를 사용한다. Generator 모델 - Unsupervised Learning —> 데이터가 흩뿌려져있는 것을 보고 이 데이터가 특정 training 데이터가 되도록 스스로 변화하며 학습하는 과정을 말함 —> 생성 모델의 성능이 높아질 수록 분류모델은 어려운 문제를 풀 수 있게 됨 와서스테인 로스(Wasserstein loss) ..

Deep learning 2021.08.06

Ubuntu 환경 세팅

ubuntu 20.04 Nvidia 그래픽 카드 드라이버 설치 sudo ubuntu-drivers devices sudo ubuntu-drivers autoinsatll sudo apt isntall nvidia-drivers-460 #사용하는 그래픽 카드에 따라 drivers-버전을 설치해야함 nvidia-smi #이 명령어 쳤을 때 그래픽 드라이버가 떠야 정상 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is insatlled and running. 오류가 뜬다. 다시 깔았던 버전 지우고 깔고 reboot 하면 해결 apt --insta..

Gitlab ssh-key

ssh-keygen #ivate rsa key pair. #to save the key (/home/eunbi/.ssh/id_rsa): #rsa already exists. 이미 있다고 나온다. cat /home/eunbi/.ssh/id_rsa.pub 있다고 알려준 주소를 따라 치면 ssh_rsa로 시작해서 이메일이나 서버 계정으로 끝나는 key가 출력되고, gitlab에 ssh-settings에서 전체를 복사하여 추가해주면 성공 ssh -T eunbi@AIServer01 The authenticity of host 'aiserver01 (127.0.1.1)' can't be established. ECDSA key fingerprint is SHA256:QL9EG317mb0yBc4BGE7eniImHPI..

ERROR: OOM when allocating tensor with shape

1. 배치사이즈가 큰가? - data imbalance 로더로 바꿔주는 코드를 짜서 [837,22,456,456,3] 중에 필자의 경우 22가 배치사이즈이다. 10으로 수정했음에도 불구하고 숫자만 바뀌고 같은 에러가 뜸. 다른 방법을 찾아봐야겠다. 2. 할당된 GPU에서 다른 문제는 없는가 ? 여기서 필자는 1번 GPU를 설정하여 docker container로 작업을 진행중이다. 여기서 저 문제는 GPU메모리가 어디엔가 다른 곳에 할당되고 있는 것이다. 그래서 도커를 빠져나와서 nvidia-smi 로 확인해보면 1번 필자가 할당된 메모리에서 3줄이 있는데, 그 중 python으로 보이는 680396 PID번호를 죽여주면 된다. sudo kill 680396 watch -n 1 nvidia-smi 다시 ..

Deep learning/Error 2021.07.27

Model Performance Measure

Accuracyprecisionrecallf1 score Confusion Matrix를 통해서 만든 모델을 평가할 수 있음. Precision(정확도)모델이 실제로 True 라고 한 것 중에 실제 정답이 True 인 것 (모델의 관점)TP / (TP+FP) 2. Recall(재현율)실제로 정답이 True 인것 중에 모델이 True 라고 한 것 (데이터의 관점)TP/(TP+FN) 3. F1 ScorePrecision 과 Recall 의 조화평균2*(Precision*Recall)/Precision+Recall실제로 양성 positive 케이스들에서 진짜 true양성 positive 로 예측에 성공한 확률이다. 즉 예측했어야 하는 케이스들에서 놓치지 않고 예측해서 진짜를 잡아낸 경우라고 보면 된다. Upl..

Deep learning 2021.07.23

Imbalanced data

https://mjdeeplearning.tistory.com/77 기본 데이터셋에서 실험할 데이터크기에 따라 Imbalance 한 데이터셋을 만들어야한다. 데이터가 중복되지 않도록 만드는 것이 중요하다. 데이터의 크기가 많으면 그렇게 중요하지 않을수 있지만 소수의 데이터에서 실험하고자하는 데이터에서 각 클래스별로 데이터수가 다르고 이러한 데이터셋이 딥러닝 학습에 영향을 주는지 확인을 해야하기 때문에 중요한 사항이 된다. data크기만큼 정확한 학습을 하기 위해서는 배치 단위 학습시에 배치의 크기로 데이터의 크기를 나눴을때 나머지가 0이되도록 해서 데이터 전체가 학습에 사용되도록 해야한다. ex ) len(imbalance_data) / batchsize ==0 / 나누기 % 나머지 배치사이즈와 트레이닝..

Deep learning 2021.07.23

Transfer Learning

Transfer Learning은 이미지넷(100만장이 넘는 이미지를 담고 있는 데이터셋으로 각 이미지에 레이블이 붙어 있음)이 제공하는 거대한 데이터셋으로 학습한 가중치의 일부를 능력이 유사하거나 새로운 분야의 신경망에 복사한 후, 그 상태로 재학습을 수행하는 것을 의미한다. 전이 학습은 학습 데이터가 부족한 프로젝트를 진행하는 경우 매우 큰 도움이 된다. transfer learning 설명 https://dataplay.tistory.com/30 transfer learning 소스 코드 https://colab.research.google.com/drive/1UKg_Okb1zXdSzInghU6vXQMLnFQTBO5e#scrollTo=KXvkTWMu4Uih tensorflow 공식 튜토리얼 http..

Deep learning 2021.07.23