목록AI/Deep Learning (21)
개발학습일지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bVJq3t/btsGKeJw6gH/KZ3wNLRSZVlhUPS9V45wOk/img.png)
이미지를 분류하는 인공지능을 만들어보자 데이터셋 : TensorFlow keras datasets API에 들어있는 Fashion MNIST데이터 import numpy as np import tensorflow as tf from tensorflow.keras.datasets import fashion_mnist mnist = tf.keras.datasets.fashion_mnist 텐서플로우에서 사진을 넘파이로 변환해 둔 데이터 트레이닝셋과 테스트셋 가져온다 (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train.shape # (60000, 28, 28) X_test.shape # (10000, 28, 28) 데이터의 들어있는 사진 확인하는..
분류 문제 Loss 셋팅 분류의 Loss 함수는 2가지로 나뉜다 1. 2개로 분류하는 문제에서는 loss = ' binary_crossentropy ' 2. 3개 이상으로 분류하는 문제에서는 loss = ' sparse_categorical_crossentropy ' # 2개로 분류 model.compile( optimizer= 'adam', loss= 'binary_crossentropy', metrics= [ 'accuracy' ]) # 3개 이상으로 분류 model.compile( optimizer= 'adam', loss= 'sparse_categorical_crossentropy', metrics= [ 'accuracy' ]) 수치 예측 문제 Loss 셋팅 수치의 Loss 함수의 종류는 다양하지..
함수 만드는 라이브러리 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten 프래튼 라이브러리 from types import MethodWrapperType 모델을 만드는 함수를 만들때, 이미지의 가로 세로를 전부 일렬로 만들어 인풋레이어에 지정 해준다 - Flatten() 사용 : 이미지 인풋레이어의 갯수는 행*열 이다 - 일렬로 만들다보면 위치에 문제가 생길 수도 있다 그래서 모양대로 아키텍처를 만들기 위해 CNN(특징값 보존)을 개발했다 def build_model(): model = Sequential() model.add(Flatten()) model.add(Dense(12..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Aph9u/btsGGZfLgvm/p8svR9ogKYOutFAvx6Pd1K/img.png)
텐서플로우 EarlyStopping, Callback Callback : 내가 만든 함수를 프레임워크가 실행시켜주는 것이다 EarlyStopping : 지정된 에포크 횟수동안 성능 향상이 없으면 자동으로 훈련이 멈춘다 비어있는 인공지능을 만들고 코드를 작성해주면 된다 # 비어있는 인공지능 model = build_model() # patience를 10으로 설정하면, 10번의 에포크동안 성능향상이 없으면, 학습을 끝내는 것이다 early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10) # 학습할때 callbacks을 입력 epoch_history = model.fit(X_train, y_train, epochs=100000..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bsnqGB/btsGJMTln27/3G8zGVc0tG74wxBioeOIhK/img.png)
validation 이란? : 에포크가 한번 끝날때 마다 학습에 사용하지 않은 데이터로 시험 보는 것을 말한다 ** 테스트 = 인공지능이 완전히 학습이 다 끝난 상태에서 평가 ** 벨리데이션 = 학습 중에 (에포크 하나가 끝날때마다) 평가 인공지능 학습(fit) 시킬때 파라미터로 넣어서 지정해준다 - validation_split= 사용 _ 학습할때 학습 데이터의 0.n 은 테스트 용으로 쓰겠다고 지정하는 것이다 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense def build_model() : model = Sequential() model.add(D..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUJlm9/btsGHj553PG/D6leZg9lok4yAcdukED9K1/img.png)
epoch_history : 객체에 저장된 통계치를 사용해 모델의 훈련 과정을 시각화할 수 있다 # 학습시킬때 변수에 저장하여 학습시킨다 epochs_history = model.fit(X_train, y_train, batch_size= 10, epochs= 100) # 저장된 변수의 히스토리는 딕트로 나온다 epochs_history.history import matplotlib.pyplot as plt # 차트로 나타내기 (위에서 확인한 history의 키값 입력) plt.plot(np.arange(1, 100+1), epochs_history.history['loss']) plt.xlabel('# epochs') plt.ylabel('Loss') plt.show()
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b8ShzS/btsGHG02iau/Sc0gXDG0qSYvSvAF3q56PK/img.png)
텐서플로우 옵티마이저 런닝레이트(학습률) 셋팅하기 : learning rate란 미분 기울기의 이동 보폭(step) 이다 : 숫자가 적을수록 파라미터의 오차를 줄이는 숫자가 조금씩 내려간다 : 에포크 와 마찬가지로 Learning rate의 값이 적합하지 않을 경우, Overflow가 발생할 수 있다 - 모델 컴파일 할때 원래는 옵티마이져를 문자열로 불러왔지만, 함수로 불러오면 런닝레이트 파라미터를 직접 지정 할 수 있다 런닝레이트 파라미터의 디폴트 값은 0.001이다 def build_model() : model = Sequential() model.add(Dense(64, 'relu', input_shape=(X_train.shape[1],))) model.add(Dense(64, 'relu')) m..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b3okVX/btsGJLGSQ7G/sguaf6a54b13wZtKzZFN11/img.png)
딥러닝 텐서플로우 리그레션(수치예측) 문제 모델링 모델링 하기 전 데이터 전처리는 필수이다! 1. 데이터 확인 후 X, y 값 지정하기# 기본 데이터 통계치 확인df.describe()# nan값 확인df.isna().sum()# nan 값 있으면 제거df.dropna()# 학습을 위해 X,y값 지정 (X값은 예측에 필요한 컬럼, y는 예측할 값)X = df.loc[ : , '컬럼' : '컬럼' ]y = df['컬럼'] 2. 피처스케일링 _데이터 정규화하기- y 값을 정규화 할 경우 에러 주의 해야한다- 기본적으로 1개의 컬럼으로 y 값을 지정했을 경우 y는 1차원 데이터 시리즈로 되어있다 그래서 y를 피처스케일링 해주기 위해선 y.values.reshape( , )을 해줘야 한다 _ y.val..