Machine Learning

    Tensorflow - 레이블인코딩 된 y값을 원핫인코딩으로 바꾸기

    위의 0부터 9까지의 클래스로 분류된 numpy array를 One-Hot encoding으로 변환하려고 한다. numpy 라이브러리에는 없지만, 머신러닝 과정에서 유용한 numpy array를 다루는 기능들을 keras.utils 라이브러리에서 제공한다. tf.keras.utils.to_categorical 레이블 인코딩 된 배열 y를 원핫인코딩으로 변환 num_classes: 총 클래스 수. 입력하지 않았을 때, default 값은 max(y) + 1 import tensorflow as tf # 0부터 9까지의 클래스로 분류된 ndarray y_train >>> array([5, 0, 4, ..., 5, 6, 8], dtype=uint8) # 원핫인코딩으로 변환 y_train = tf.keras.u..

    Tensorflow - model을 파일로 저장하고 불러오는 방법

    1. 전체 모델구조(Network)와 가중치(Weight) 함께 저장하기 모델 + 가중치를 저장해서 불러오면 모델에 complie을 할 필요없이 바로 사용 가능하다. 폴더구조로 저장, 불러오기 # 폴더구조로 저장 model.save('fashion_mnist_model') # 불러오기 model2 = tf.keras.models.load_model('fashion_mnist_model') 파일구조로 저장, 불러오기 # 모델을 h5파일 하나로 저장 model.save('fashion_mnist_model.h5') # 불러오기 model3 = tf.keras.models.load_model('fashion_mnist_model.h5') 2. 모델 구조(Network)만 저장하고 불러오기 # 네트워크를 jso..

    Tensorflow - 이미지를 1차원으로 만드는 방법(Flatten)

    이미지를 ANN에 input해 학습하려면 2차원 또는 3차원으로 되어있는 이미지의 shape을 1차원으로 바꿔줘야 한다. 1. keras.layers.Flatten() tensorflow에서 제공하는 Faltten() 함수를 사용하면 2차원, 3차원 input이 들어왔을때 알아서 1차원으로 바꿔준다. Flatten() 을 사용하면 모델링 시 input_shape도 자동으로 정해주기 때문에 입력할 필요가 없다. from keras.layers import Flatten model.add(Flatten()) 전체 모델 예시 import tensorflow as tf from tensorflow import keras from keras.models import Sequential from keras.laye..

    Tensorflow - Callback 클래스를 이용해서, 원하는 조건이 되면 학습을 멈추기

    accuracy나 loss 등이, 내가 원하는 특정 값이 되면 자동으로 학습을 멈추게 하고 싶다. Tensorflow에서는 특정값에 도달하면 학습을 멈추게 할 수 있는 콜백 기능을 제공한다. tf.keras.callbacks.Callback을 상속해서 사용한다. import tensorflow as tf from tensorflow import keras from keras.models import Sequential from keras.layers import Dense from keras.layers import Flatten class myCallback(tf.keras.callbacks.Callback): def on_epoch_end(self, epoch, logs={}): if logs['va..

    Tensorflow - Dropout 사용법

    Dropout 이란? 딥러닝 학습에 있어서의 overfitting을 방지하기 위한 방법 중 한 가지 hidden layer의 일부 뉴런이 동작하지 않게 하여, 특정한 feature만을 과도하게 학습하는 것을 방지하는 방법 모델링시 계층(레이어) 설정에서 정의 Dropout 사용법 from keras.layers import Dropout # 노드의 20%를 드롭아웃 처리 model.add(Dropout(0.2)) 전체 모델 예시 import tensorflow as tf from keras.models import Sequential from keras.layers import Dense from keras.layers import Dropout def build_model(): model = Seque..

    Tensorflow - Overfitting, Underfitting 개념

    1. Generalization (일반화) 모델이 처음 보는 데이터에 대해 정확하게 예측 할 수 있으면, 이를 train 세트에서 test 세트로 일반화 되었다고 한다. 2. Overfitting (과대적합) 과대적합(overfitting)이란 머신러닝 모델을 학습할 때 train 데이터셋에 지나치게 최적화하여 발생하는 문제이다. 즉, 모델을 지나치게 복잡하게 학습하여 학습 데이터셋에서는 모델 성능이 높게 나타나지만 정작 새로운 데이터가 주어졌을 때 정확한 예측/분류를 수행하지 못한다. 3. Underfitting (과소적합) 과소적합(underfitting)이란 과대적합의 반대 개념으로서, 머신러닝 모델이 충분히 복잡하지 않아(최적화가 제대로 수행되지 않아) train 데이터의 구조/패턴을 정확히 반영..

    Tensorflow - ANN 분류 모델 activation, loss 함수 설정 방법

    1. 분류 문제에서의 활성화 함수 (Activation Function) Sigmoid 2개의 분류 문제를 다룰 때 쓰는 활성화 함수 알려지지 않는 파라미터를 데이터로부터 추정해 0과 1로 분류하는 것 Softmax 3개 이상의 분류 문제를 다룰 때 쓰는 활성화 함수 데이터를 0~1사이의 값으로 정규화하여 출력되는 값들의 총 합이 1이 되는 함수 2. 분류 문제에서의 손실 함수(Loss Function) binary_crossentropy 2개의 분류 문제를 다룰 때 쓰는 손실 함수 categorical_crossentropy 3개 이상의 분류 문제를 다룰 때 쓰는 손실 함수 레이블(y값)이 원핫 인코딩되어 있는 경우에 적용 sparse_categorical_crossentropy 3개 이상의 분류 문제..

    Tensorflow - 3개 이상 분류 문제의 인공신경망(ANN)

    텐서플로우에서 지원하는 fashion_mnist 데이터를 이용해 10개의 패션이미지를 분류하는 ANN을 만들어보자. fashion_mnist 참고: https://github.com/zalandoresearch/fashion-mnist#labels 1. 데이터 가져오기 import tensorflow as tf mnist = tf.keras.datasets.fashion_mnist # 이런 형식으로 불러오도록 정해져있다. (X_train, y_train),(X_test, y_test) = mnist.load_data() plt.imshow(X_train[200], cmap='gray') plt.show() y_train[200] 결과는 8이 나온다. 위의 레이블을 참고하면 bag이란 걸 알 수 있다. 2..