✳️ 딥러닝 실습
- 이번 실습에 사용할 패키지에 대한 정보
https://www.tensorflow.org/api_docs/python/tf/keras/Model#fit
https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dense
- 패키지 설치
! pip install tensorflow
- 불러오기
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# 딥러닝에서는 넘파이를 많이 사용한다.
import numpy as np
from sklearn.preprocessing import StandardScaler
- 데이터 형성
# 간단한 데이터 형성
weights = np.array([87, 81, 82, 92, 90, 61, 86, 66, 69, 69])
heights = np.array([187, 174, 179, 192, 188, 160, 179, 168, 168, 174])
- 딥러닝을 위한 모델 형성
# Sequntial 모델 초기화(머신러닝에서 모델 설계도 데려왔던 것같이 진행
# Sequntial은 층층이 쌓는 과정에 사용함, 현재 상태는 아무것도 들어 있지 않는 빈 껍데기 상태
model = Sequential()
# 데이터가 하나이므로 units이 1개
dense_layer = Dense(units=1, input_shape=[1])
# 모델에 대한 새로운 층 추가(인풋레이어)
model.add(dense_layer)
# compile(학습 과정 설정) 진행
# optimizer : Gradient Descent 종류 선택 -> 요즘 가장 성능이 좋다는 'adam' 사용
# loss : 최소화 하려는 값(학습 중 손실 함수 설정)
model.compile(optimizer='adam', loss='mean_squared_error')
- 모델의 요약 확인
model.summary()
파라미터가 두 개인 것은 가중치와 편향 때문이다.
- 모델 훈련
# 모델 훈련
# epochs : 전체 훈련 데이터 셋에 대해 학습을 반복하는 횟수
model.fit(weights, heights, epochs=100)
Epoch가 100이어서 100번 학습을 한 것을 확인 할 수 있고, 손실된 정도에 대해 알 수 있다.
손실(loss)은 실제 정답과 모델이 예측 한 값 사이의 차이(거리 또는 오차)이다.
손실이 클수록 데이터에 대한 오류도 커진다.
쉽게 말해, 틀리게 예측한 경우 얼마나 오류를 범했는가로 볼 수 있다.
너무 간단한 모델이라서 성능이 좋지 않을 것이다. 그래서 좀 더 복잡한 모델을 만들어 보기로 했다.
- 좀 더 복잡한 모델 만들기 + 훈련
# 히든 레이어를 포함한 아키텍처 형성
model2 = Sequential()
# 다시 새로운 층을 추가하는데 이번에는 64개를 추가(인풋레이어)
# 활성함수는 relu
model2.add(Dense(units=64, activation='relu', input_shape=[1]))
# 히든레이어 추가
model2.add(Dense(units=2064, activation='relu'))
# 아웃풋이 하나로 나오게 하기 위해 units을 1로 지정, 이진분류를 한다면 2, 다중분류를 하게 되어서 아웃풋이 여러개가 필요하면 그 개수를 써주면 된다.
model.add(Dense(units=1))
# compile(학습 과정 설정) 진행
model2.compile(optimizer='adam', loss='mean_squared_error')
model2.summary()
model2.fit(weights, heights, epochs=100)
- 처음 단순한 모델에서는 loss가 33098.1758
- 히든레이어를 추가한 복잡한 모델에서 loss가 14720.0703
- 처음보다 낮아졌고 위에 모델보다는 좀 더 나은 모델이 될 수 있는 것 같다.
➕ 사실 복잡한 모델을 훈련하는데 오류가 났었다.
InvalidArgumentError: Graph execution error 가 떴어서.. 어쩌지 왜 안되지.. 하고 찾아보니 tensorflow의 버전에 따른 호환성의 문제로 여겨져서 설치한 패키지의 버전을 확인해봤다.
! pip show tensorflow
2.17.0 으로 나타났다. 매우 최신 버전!!! 그래서 2.11로 다운그레이드 해보기로 하였다.
(다른 사람들도 다운그레이드 해서 문제를 해결한 듯 했다.)
# reinstall tensorflow 2.11
! pip install tensorflow==2.11
다운그레이드는 원하는 버전을 저렇게 입력해주면 기존에 있던 버전은 자동으로 삭제되고 원하는 버전으로 설치된다.
이렇게 다운그레이드를 하고 위에 코드를 다시 쳐보니 다행히 학습되어 결과를 얻을 수 있었다.
'📒 Today I Learn > 🤖 Machine Learning' 카테고리의 다른 글
[딥러닝] 딥러닝 이론 (0) | 2024.08.15 |
---|---|
[머신러닝 심화] 비지도 학습 실습 (0) | 2024.08.14 |
[머신러닝 심화] 비지도 학습 이론 (0) | 2024.08.14 |
[머신러닝 심화] 분류와 회귀 모델링 심화 실습 (0) | 2024.08.13 |
[머신러닝 심화] 분류와 회귀 모델링 심화 이론 (0) | 2024.08.13 |