21.07.07
Deap Learning
@경사하강법
- 경사하강법은 Loss가 0에 가까워질 때까지 값을 다시 Model로 보내어 학습시키는 방법 이다.
@Sequential 모델 이용 답 추측
아래와 같은 데이터를 이용해 딥러닝 모델을 설계한다.
%Library 호출
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
import sklearn
from sklearn.model_selection import train_test_split
- 기본적으로 keras라는 딥러닝 패키지를 사용
- 내가 학습에 사용할 모델은 Sequential 이라 한다.
- train 데이터와 test 데이터로 나누기 위해 train_test_split 호출
%데이터 분리 및 train 생성
x = data[:,:17]
y = data[:,17]
X_train, X_test, y_train, y_test = train_test_split(x, y,
test_size = 0.3,
random_state=1)
- 위에 언급됐듯, 17개의 문제 열과 1개 열인 답이 존재
- train & test 의 비율은 7:3으로 설정하였다. -> test_size
- 학습할 때마다 값이 바뀌지 않고 동일하도록 random_state 부여
%Model 설계
model = Sequential()
model.add(Dense(10, input_dim = 17, activation = 'relu')) # 입력층
model.add(Dense(6, activation = 'relu')) # 은닉층
model.add(Dense(1, activation = 'sigmoid')) # 출력층
model.compile(loss = 'binary_crossentropy', optimizer = 'adam',
metrics = ['accuracy'])
- model이란 변수에 Sequential 모델 담기
- add라는 명령어로 층을 추가하는데, 첫번째 입력층의 경우 input_dim 이란 옵션이 필요하다
- 해당 옵션은 문제가 될 데이터의 열 갯수이다
- 그리고 순서대로 2번째는 은닉층, 3번째는 출력층 순으로 입력된다
- 출력층의 경우 activation을 sigmoid (0과 1이니까)로 줬으며, 출력되는 열의 수가 1이기 때문에 Dense는 1이다.
- activation은 활성화 함수를 뜻함
- 마지막 compile은 내가 도출할 학습 결과에 대한 부분이다
- compile의 loss는 얼마나 "입력데이터가 출력데이터와 일치하는지 평가"해주는 함수이다.
- 나는 0이냐 1이냐를 판단하기 때문에 binary_crossentropy를 주었다.
- optimizer는 손실함수를 기반으로 네트워크가 어떻게 업데이트될지 결정한다.
- 물론 해당 부분의 종류는 adam을 제외하고, GD나 OGD?? 등등 많다.
- metrics는 내가 평가할 측정항목이며, 나는 정확도를 보고 싶기 때문에 위와 같다.
%학습 및 평가
model.fit(X_train, y_train, epochs = 1000)
model.evaluate(X_test, y_test)
model.predict(X_test)
model.predict_classes(X_test)
- 머신러닝과 마찬가지로 학습, epochs는 학습 수를 의미한다.
- evaluate은 해당 Model에 대한 성능을 나타낸다.
- predict는 해당 Model에 대한 결과의 수치적 값, predict_clasees는 해당 Model에 의한 결과를 학습에 따라 나타낸다.
@Layer - 입력층 , 은닉층 , 출력층
- 좌측부터 순서대로 입력층, 은닉층, 출력층 을 보인다
- 위에서 실습했던 부분, input_dim이 입력하는 Data의 열 갯수와 같아야 하는 이유는 위의 사진과 같은 이유라 할 수 있다.
- 출력층 부분에서 내가 도출할 답의 갯수가 3 이기 때문에 Dense는 3으로 지정한다
반응형
'국비교육기관 > 수업' 카테고리의 다른 글
88일차 Deap Learning 모델 생성, loss, Dense (0) | 2021.07.13 |
---|---|
85일차 DeapLearning - 모델 저장&호출 (0) | 2021.07.08 |
83일차 Linux / DeepLearning - XOR,OR 게이트, 퍼셉트론 (0) | 2021.07.05 |
66일차 Git/GitHub 사용법 (0) | 2021.06.14 |
64일차 머신러닝 - 이진분류, 정밀도, 재현율 / AJAX (0) | 2021.06.10 |
댓글