첫 모델 만들기
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, InputLayer
dense = Dense(units=1)
model = Sequential([
InputLayer(shape=[1]),
dense
])
model.compile(optimizer="sgd", loss="mean_squared_error")
xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
model.fit(xs, ys, epochs=500)
print(model.predict(np.array([10.0])))
print(f"신경망이 학습한것 {dense.get_weights()}")
모델 구조 정의
model = Sequential([ InputLayer(shape=[1]), Dense(units=1) ])
- 텐서플로를 사용할 때에 Sequential로 층을 정의
- 괄호안에는 층의 형태를 정의 Dense는 뉴런이 완전히 오밀조밀하게 연결되어 있다는 것을 의미
- InputLayer(shape=[1]) 입력 차원 1개
- Dense(units=1) 출력 뉴런도 1개
모델 컴파일
model.compile(optimizer="sgd", loss="mean_squared_error")
- sgd : 확률적 경사 하강법 사용
- 손실함수는 평균 제곱 오차 (MSE)를 사용
훈련 데이터 준비
xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
입력과 출력 데이터
y = 2x -1 관계를 학습
모델 훈련
model.fit(xs, ys, epochs=500)
모델 훈련 - 500번 반복하여 학습
예측
model.predict(np.array([10.0]))
예측값으로 18.981152이 나왔는데, 대략 19와 유사한 값이 나옴
매우 간단한 선형 회귀 문제를 신경망으로 해결하는 예제.
신경망이 학습한 것
[array([[1.997801]], dtype=float32), array([-0.9931826], dtype=float32)]
X와 Y의 관계 : Y = 1.997801X - 0.9931826 로 학습