일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Deep Learning
- 딥러닝
- DB
- keras
- pythone
- 예측
- 데이터전처리
- 회귀모델
- python
- Oracle
- 데이터
- 데이터 가공
- sql
- 정확도
- 훈련
- tensorflow
- sklearn
- 오라클
- 파싱 오류
- 머신러닝
- 데이터 분석
- HeidiSQL
- 시각화
- pandas
- 해석
- Database
- python기초
- 데이터베이스
- MariaDB
- 데이터 수집
- Today
- Total
코딩헤딩
Deep learning[딥러닝] 인공신경망 훈련모델 (데이터 전처리, 모델 생성) 본문
딥 러닝이란 무엇입니까?
딥 러닝은 인간의 두뇌에서 영감을 얻은 방식으로 데이터를 처리하도록 컴퓨터를 가르치는 인공 지능(AI) 방식입니다. 딥 러닝 모델은 그림, 텍스트, 사운드 및 기타 데이터의 복잡한 패턴을 인식하여 정확한 인사이트와 예측을 생성할 수 있습니다. 이미지를 설명하거나 사운드 파일을 텍스트로 변환하는 등 일반적으로 인간의 지능이 필요한 작업을 자동화하는 데 딥 러닝 방법을 사용할 수 있습니다.
https://aws.amazon.com/ko/what-is/deep-learning/
1. 라이브러리 정의
import tensorflow as tf
from tensorflow import keras
* 텐서플로우
import matplotlib.pyplot as plt
* 시각화
import numpy as np
* 넘파이
from sklearn.model_selection import train_test_split
* 훈련 및 테스트 데이터 나누기
tf.keras.utils.set_random_seed(42)
tf.config.experimental.enable_op_determinism()
- 실행결과를 동일하게 하기 위한 처리 (완전 동일하지 않을 수도 있음)
- 연산고정
2. 데이터 수집
(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()
print(train_input.shape, train_target.shape)
print(test_input.shape, test_target.shape)
결과 :
(60000, 28, 28) (60000,)
(10000, 28, 28) (10000,)
- keras에서 제공해주는 이미지 데이터셋 사용
- MNIST패션 이미지
- 이미지 데이터는 픽셀 데이터로 이루어져 있다.
* 훈련데이터 10개만 이용해서 데이터를 이미지로 시각화하기
"""서브플롯 사용 : 이미지 10개를 하나로 시각화"""
fig, axs = plt.subplots(1, 10, figsize=(10, 10))
"""훈련데이터 10개에 대한 처리"""
for i in range(10):
"""픽셀데이터를 이미지로 시각화 : imshow()"""
axs[i].imshow(train_input[i], cmap="gray_r")
"""x, y좌표 숨기기"""
axs[i].axis("off")
plt.show()

3. 데이터 스케일링
- 사용되는 데이터의 특성상 0부터 255까지의 값을 가지고 있음
- 값의 범위폭이 크기 때문에 일반화(데이터 스케일링) 하여 사용
- 정규화를 수행하는 방법으로 라이브러리를 사용해도 되며, 값의 최댓값을 이용해서 산술연상을 이용해서 데이터
스케일링을 하기도 함.
* 데이터 스케일링 수행하기
train_scaled_255 = train_input / 255.0
train_scaled_255[0]
test_scaled_255 = test_input / 255.0
test_scaled_255[0]
train_scaled_255.shape, test_scaled_255.shape
결과 : ((60000, 28, 28), (10000, 28, 28))
훈련을 하기 위해서 데이터를 2차원으로 변경해 주어야 한다.
* 모델 훈련에 사용하기 위해서는 2차원으로 반환
train_scaled_2d = train_scaled_255.reshape(-1, 28*28)
train_scaled_2d.shape
결과 : (60000, 784)
4. 훈련 : 검증 데이터로 분리(8:2)
train_scaled, val_scaled, train_target, val_target = train_test_split(train_scaled_2d,
train_target,
test_size=0.2,
random_state=42)
print(train_scaled.shape, train_target.shape)
print(val_scaled.shape, val_target.shape)
결과 :
(48000, 784) (48000,)
(12000, 784) (12000,)
5. 인공신경망 모델 생성하기
인공신경망 모델 훈련순서
1. 모델 생성 (또는 계층 생성)
2. 계층 생성 (또는 모델 생성)
3. 모델 설정 (compile)
4. 모델 훈련 시키기 (fit)
5. 성능평가 (검증, evaluate)
<성능 개선 방법>
- 데이터 증가 시키기
- 하이퍼파라미터 튜닝(일반적으로 딥러닝에서는 디폴트 값을 사용해도 됨)
-> 성능이 현저히 낮은 경우에는 튜닝 필요
- 계층을 추가 또는 제거하기.
model = keras.Sequential(dense)
model
* 모델 설정 단계
model.compile(loss="sparse_categorical_crossentropy",
### 손실함수 : 종속변수의 형태에 따라 결정됨
metrics="accuracy")
### 훈련 시 출력할 값 : 정확도 출력
* loss : 손실을 줄이기 위해 사용되는 함수 정의
: 손실함수에는 categorical_crossentropy, binary_crossentropy, sparse_categorical_crossentropy가 있음
- categorical_crossentropy : 다중분류 손실함수
-> 종속변수의 데이터 값이 원-핫이코딩된 형태로 되어 있는 경우 사용
-> 예시 데이터 : [[0, 1, 0],[0, 0, 1],[0, 1, 0], .....]
- sparse_categorical_crossentropy : 다중분류 손실함수
-> 종속변수의 데이터 값이 숫자값으로 3개 이상으로 되어있는 경우 사용
-> 예시 데이터 : [0, 1, 2, 3, 4, .....]
- binary_crossentropy : 이진분류 손함수
-> 종속변수의 데이터 값이 숫자값으로 2개 정의 되어 있는 경우
-> 예시 데이터 : [0, 1, 1, 0, 0, 1, .....]
* 모델 훈련시키기
model.fit(train_scaled, train_target, epochs=98)
- epochs : 훈련 반복 횟수
* 모델에서 사용한 계층 확인하기
model.summary()

- output shape() : 출력 크기(10개 출력)
- Param : Dense() 계층이 훈련 중에 사용한 총특성의 개수
--> Dense() 계층 계산공식 = (입력크기 + 1) * 출력크기
= (784 +1)*10 = 7850
* 은닉계층(Hidden Layer) 추가하기
model.add(
keras.layers.Dense(
10,
kernel_initializer="uniform",
activation="relu",
input_shape=(784, )
)
)
* 모델 훈련
model.fit(train_scaled, train_target, epochs=50)

* 훈련 점수 확인
score_relu = model.evaluate(val_scaled,val_target)
score_relu
결과 :
375/375 [==============================] - 0s 722us/step - loss: 0.5559 - accuracy: 0.8462
[0.555891752243042, 0.8462499976158142]
'머신러닝 | 딥러닝' 카테고리의 다른 글
Deep learning[딥러닝] 신경망계층 성능향상 (1) | 2024.01.04 |
---|---|
Deep learning[딥러닝] 신경망계층 추가 (1) | 2024.01.03 |
[ML(머신러닝)] 다중회귀모델 3 (규제, 릿지, 라쏘) (0) | 2023.12.31 |
[ML(머신러닝)] 다중회귀모델(Multiple Regression) 2 (1) | 2023.12.30 |
[ML(머신러닝)] 다중회귀모델(Multiple Regression) (0) | 2023.12.29 |