
[딥러닝] 분류 모델의 성능평가 방법(Precision, Recall, Accuracy, F1Score, Confusion Matrix)Confusion Matrix 분류모델에서 아래와 같은 형태로 표현된 테이블True Positive : 정답은 True이고, 분류 결과도 True인 것 (정답)False Positive: 정답은 False이고, 분류 결과는 True인 것 (오답)False Negative: 정답은 True이고, 분류 결과는 False인 것 (오답)True Negative: 정답은 False이고, 분류 결과도 False인 것 (정답) Precision(정밀도)모델이 True라고 한 것 중에 실제 정답이 True인 것 (모델의 관점)위 confusion matrix에서 Precision=TP..
[딥러닝] Tensorflow에서 데이터로더 병렬처리 방법개요tensorflow에서 sequence 데이터로더를 사용하여 학습할 때, 데이터로더 처리 시간이 길어 gpu 사용률(Volatile GPU-Util)이 낮은 경우가 있다. gpu 사용률이 낮은건 다양한 이유가 있지만, 그 중 cpu 처리 속도가 느려 데이터를 로드하는 시간이 길어 학습 연산하는 gpu가 놀고 있는 경우도 있다. 이런 경우에는 학습 시간이 오래 걸리기 때문에, 데이터를 불러오는 시간을 줄여야 한다. 이 때, tensorflow에서 지원하는 OrderedEnqueuer를 사용하면 sequence를 병렬처리하여 시간을 단축시킬 수 있다.OrderedEnqueuer 사용법Sequence 데이터로더 생성Sequence를 상속받아 Data..

[딥러닝] Mixed Precision 사용하기(tensorflow 설명)개요mixed precision은 모델 학습시 FP16, FP32 부동 소수점 유형을 상황에 따라 유연하게 사용하여 학습을 더 빠르게 실행하고 메모리를 적게 사용하는 방법이다. Forwad, Backward Propagation은 모두 FP16으로 연산하고, weight를 업데이트 할 때에는 다시 FP32로 변환하여 계산한다. 단, FP16의 경우, 매우 낮은 수는 표현할 수 없어 모두 0이 된다. 이를 방지하기 위해 특정 값을 곱하여(scaling하여) loss, gradients 계산하고 weight를 업데이트한다. 이때 FP16 범위를 벗어나는 underflow, overflow가발생하지 않게 적정한 값으로 scaling 해줘..
[딥러닝] Tensorflow 에서 모델 생성하는 법모델 생성 방법Tensorflow에서는 딥러닝 모델을 만드는 방법이 아래와 같이 3가지가 있습니다. Sequential 모델Functional 모델Subclassing 모델1, 2번은 기존 Keras를 사용하셨다면 이해하기 쉽고, 3번은 pytorch와 비슷한 방법입니다. 각각 어떻게 모델을 만드는지 알아보겠습니다.Sequential 모델 가장 구현하기 쉬운 방법입니다. Sequential 모델을 생성하여 원하는 layer를 순차적으로 add하는 방식입니다. 다만 이 방법으로는 직관적인 모델을 빠르게 구현할 수 있지만, 구조가 조금 복잡해지면 구현하기 어려울 수 있다는 단점이 있습니다.from tensorflow.keras.models import Se..
[딥러닝] tensorflow에서 학습된 모델 저장, 불러오기저장하기저장할 때에는 2가지 방법이 있다. 모델 구조와 weight를 한 번에 저장하는 방법과, weight만을 저장하는 방법이다. 상황에 따라 필요한 방법을 사용하면 된다. 모델을 통째로 저장할 때에는 디렉토리 경로를 지정해주면 해당 경로에 모델이 저장된다. weight만을 저장할 때에는 아래와 같이 확장자 지정 없이 경로를 지정해 주면 weigh값만 저장이 된다.# 1. 모델 통째로 저장 model.save('./my_model') # 2. weight만 저장 model.save_weights('./my_model/epoch_001') # 3. callbacks를 사용하여 저장 # 체크포인트 경로 지정({}변수 에 epoch 값이 들어가도록..
Tensorflow에서 커스텀 데이터로더 만들기(Custom Dataloader, Sequence)Sequence를 사용하여 Custom Dataset 만들기초기화 함수(__init__)길이 함수(__len__)index값에 따라 데이터를 반환하는 함수(__getitem__)한 epoch이 끝날 때마다 실행하는 함수(on_epoch_end)전체 소스 코드참고자료Sequence를 사용하여 Custom Dataset 만들기pytorch에서 보통 데이터 로드할때 torch.utils.data.DataSet을 많이 사용하는데요,tensorflow 2.0 이상 버전에서도 비슷하게 custom dataset loader를 만드는 방법이 있습니다.tensorflow.keras.utils.Sequence를 사용하는 건..
이전 포스팅에서는 tensorflow를 이용해서 여러개의 레이어를 쌓고 그것을 통해 MNIST 손글씨 숫자인식을 구현해보았는데요, CNN(Convolutional Neural Network)을 통해 더욱 높은 정확도를 구현해보겠습니다. 기본적으로 CNN이란 이전의 일반적인 네트워크랑 달리 필터라는 것을 사용합니다. 이미지는 사실 2차원으로 구성된 데이터이기 때문에 이를 1차원으로 나열하면 이미지의 특성을 알아차리기 쉽지 않습니다. 2차원의 특성을 살리고자 CNN모델이 개발이 되었고 어떻게 구현하는지 살펴보겠습니다. 위 그림은 가장 기본적인 모델로 Convolutional Layer와 Pooling Layer를 두개를 연달아 놓은 후 그 데이터를 1차원으로 만들어 주고 Fully Connected Laye..
이번에는 tensorflow로 손글씨(MNIST)를 분류하는 것을 구현할 것입니다. MNIST란 0~9까지의 숫자를 손글씨로 표현한 데이터입니다. tensorflow로 이 데이터를 쉽게 불러올 수 있습니다. 이전까지 Linear Regression, Logisitc Regression을 통해 선형적인 것과 이항적인 것을 분류하는 것을 했었는데, 이 MNIST데이터는 0~9까지 multi class를 분류해야 합니다. 이를 학습하기 위해 나온 함수는 softmax입니다. 소스를 통해 살펴보겠습니다. 12345import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tffrom tensorflow.examples.tutorials.mnist..
Logistic Regression란 선형회귀와 다르게 출력이 2가지인(0또는 1) 이항분류를 하는 경우 사용한다. 예를들어 새로 온 메일이 스팸인지 아닌지 구별하거나 남자인지 여자인지 등 분류의 경우가 2가지인것을 사용한다. tensorflow 소스를 통해 알아보겠습니다. 123456789101112131415161718192021222324import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltimport pandas as pdimport seaborn as sns x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]]y_data = [[0], [0], [0], [1], [1], ..
딥러닝을 사용할 수 있는 프레임워크 Tensorflow를 통해 선형회귀(Linear Regression)을 구현하겠습니다. 선형회귀란 데이터를 선형적으로 표현할 수 있는 것을 말합니다. 기본적으로 2차원 그래프에서 한 직선을 구한다고 생각하면 됩니다. tensorflow 소스를 통해 살펴보겠습니다. 123456789101112131415161718192021222324252627import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tf x_data = [4.0391, 1.3197, 9.5613, 0.5978, 3.5316, 0.1540, 1.6899, 7.3172, 4.5092, 2.9632]y_data = [11.4215, 10.0..
- Total
- Today
- Yesterday