tensorflow
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 - 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..
Tensorflow - 콜백 EarlyStopping 사용법
callback이란: 내가 만든 함수를 프레임워크가 실행시켜 주는 것 EarlyStopping 인공지능 학습시 더 이상 에포크를 반복해도 성능 향상이 없을 경우, 학습을 조기 종료 시킨다. tf.keras.callbacks.EarlyStopping(monitor= 'val_loss', patience= N) monitor='val_loss' : 'val_loss'의 성능향상을 모니터링 하겠다. patience= N : N번의 epoch 동안 즉 N번의 epoch 횟수동안 val_loss의 값을 모니터링하여 loss가 줄어들지 않을 경우 학습을 조기 종료 # 10번(patience)의 에포크 동안 성능향상(val_loss)이 없으면 학습을 멈추라는 뜻 early_stop = tf.keras.callback..
Tensorflow - Validation(검증)을 사용하는 방법
Validation (검증) validation이란, 학습 중에 에포크가 끝날 때마다 평가하는 것을 말한다. train 데이터로 모델을 생성한 뒤, 중간과정 없이 test 데이터로 모델을 평가하는 경우, 우리가 가지고 있는 모든 데이터를 사용했기 때문에 overfitting이나 underfitting이 발생한 것을 파악 못 할 수도 있다. 따라서 새로운 데이터에 대해 얼마나 잘 동작하는지 학습 중에 모의고사를 치룬다고 생각하면 된다. train 데이터의 일정 부분을 나눠서 train에 사용하지 않고 validation에 사용하는 경우와 validation 데이터를 따로 준비해서 사용하는 경우가 있다. 텐서플로우의 모델을 학습할때 validation을 사용하는 방법을 알아보자. 1. train 데이터의 일..
Tensorflow - Learning rate(학습률)을 설정하는 방법
1. Learning rate(학습률) 딥러닝을 할 때 학습률은 적당한 값을 넣어주는 것이 가장 중요, 학습률에 따라 인공지능 성능 좌우 일반적으로 Learning Rate의 값을 0.01로 설정, 필요에 따라 조금씩 조정 학습률 값을 너무 크게 설정 할 경우 지그재그의 방향으로 이상하게 학습하는 오버슈팅(Overshooting) 문제 발생 학습률 값을 너무 적게 설정 할 경우 학습 단계가 너무 많이 필요, 하이퍼 파라미터를 찾는 과정에서 국소 최저치(Local Minima) 현상 발생 국소 최저치(Local Minima) 경사 하강법(gradient descent)을 시도할 때 최적의 해인 전역 최저치(global minima)가 아닌 학습 데이터의 특성으로 인해 국소적으로 낮은 값이 부분적 해(par..
Tensorflow - regression(수치예측) 문제의 인공신경망(ANN)
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv('Car_Purchasing_Data.csv', encoding='ISO-8859-1') 0. 데이터 확인 df.info() df.describe() 1. nan이 있는지 확인 df.isna().sum() 2. 학습데이터 X와 정답데이터 y로 분리 X = df.loc[:, 'Gender':'Net Worth'] y = df['Car Purchase Amount'] 3. X, y 모두 숫자 데이터이므로 인코딩 할 필요 없다. 4. feature scaling from sklearn.preprocessing imp..