본문 바로가기
머신러닝

[ML] 머신러닝 공부 20241203

by 규이 2024. 12. 3.

첫 모델 만들기 

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 로 학습