전체 글 129

Keras Tuner 케라스 튜너 설치

이제 모델의 성능을 높이기 위해서 어떠한 방법들을 사용해야하는지 찾던 중 keras-tuner를 알게되었다. 최적의 모델을 위해서 모델의 요소값을 찾는 과정을 Hyper-prameter Tunning이라고 한다. 모델의 하이퍼파라미터 요소의 개수가 적고 많음에 따라 모델의 성능은 바뀔수 있고 이를 용이하게 하기 위해서 구글에서 케라스 튜너라는 프레임 워크를 개발했다. https://youtu.be/Un0JDL3i5Hg Automatic hyperparmeter tuner : keras tuner and tensorflow 2.0 to boost accuracy 1. Tuner is defined - determine which hyperparmeter combinations hsould be tested..

Deep learning 2021.08.23

Error : Running pip as the 'root' user can result in broken permission and conflicting behaviour with the system package manager

sudo pip install 을 할뻔했지만 시스템이 망가질 수도 있다는 구글링을 통해서 해결방법을 찾는중,,, keras-tuner를 설치하기 위해서 docker container안에서 저 명령어를 쳤을때 저렇게 나왔다. 방법을 구글링해보니 계속 virtual environment에서 하라고 하는데 내가 지금 실행하고 있는 환경은 도커이기 때문에 도커 컨테이너 들어가기전 서버 terminal에서 설치하고 컨테이너안으로 들어가보니까 설치가 되어있는 것을 확인할 수 있었다. 해결 ~!

Deep learning/Error 2021.08.20

adversarial sample

같은 팬더 사진임에도 불구하고 긴팔원숭이라고 인식하도록 만든 noiise를 합성하게 되면 왼쪽의 그림의 팬더는 팬더로 인식하고, 오른쪽 그림의 팬더는 긴팔원숭이로 모델이 인식하게 된다. 오른쪽과 같은 샘플을 adversarial sample 이라고하고, 이러한 행위를 딥 네트워크가 인식하는 것을 방해하기 위한 행위라고 하여, adversarial attack 이라고 부릅니다. Adversarial sample에서 가장 중요한 사실은, 사람이 서로 차이를 인지하지 못할 만큼 비슷하게 생긴 두 샘플이 딥 네트워크의 시각에서는 서로 매우 다른 샘플일 수 있다는 점입니다. 또 한 가지 중요한 사실은, 이 sample들은 자연계에는 존재하기 어려운 샘플이며, 특정 목적을 가지고 인위적으로 생성할 때 비교적 쉽게 ..

Optimizer

Imbalanced Data를 preprocessing 하기 위해서 Class weights 방법을 사용하지만 이러한 결과로 Back propagation에 영향을 많이 주기 때문에 optimizer를 어떠한 것을 고르는지가 학습의 결과에 큰 영향을 미친다. SGD와 같이 기울기의 크기를 바로 계산하여 update하는 방식은 사용할 수 없기 떄문에, Scaling Change에 상대적으로 영향을 덜 받는 Adam과 같은 optimizer를 사용해야한다. Optimization을 하기 위한 고려사항은 크게 3가지가 존재한다. 1. Local Minima 2. Plateau 3 Zigxag Logcal Minima 문제는 에러를 최소화시키는 최적의 파라미터를 찾는 문제에 있어서 파라미터의 공간에 수많은 ho..

Deep learning 2021.08.18

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

너무 큰 데이터 처리

tf.data.Dataset 은 tensorflow 훈련 데이터를 다룰 때 아주 편리하다. padding, batch, shuffle, map 기능을 다 제공하고 있기 떄문이다. from_tensor_slices를 쓰면 numpy array를 바로 Dataset으로 변환해준다. 근데 변환하려는 전체 데이터를 메모리에 올릴 수 있는 크기가 아니면, 메모리 에러가 뜬다,, OOM ! --> Dataset의 from_generator를 사용해보자 : 이 방법은 메모리에 다 데이터를 로딩하는 것이 아니라 필요할 때만 python generator를 통해서 데이터를 가져오기 때문에 메모리 사용량을 줄일 수 있다는 것이 특징이다. 실제로는 데이터를 로딩하지 않는 방식이기 때문에 ! 찾아보니까 from_tensor_..

Language/python 2021.08.17

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..