본문 바로가기
TIL/Machine Learning

Tensorflow.js | 머신러닝 모델 만들기(지도학습 회귀)

by 홍차23 2021. 1. 19.

날짜: 2021.01.04-2021.01.12

키워드: 지도학습-회귀, tensorflow.js, 생활코딩 머신러닝야학

요약: 나의 모델을 만들고, tensorflow.js api 살펴보기

순서: 과거의 데이터 입력 → 모델 모양 만들기 → 데이터로 모델 학습(FIT)시키기 → 모델 활용

Tensorflow.js 나의 모델 만들기

1. 과거의 데이터(온도, 판매량) 입력

  • 과거의 데이터를 준비한다. 온도에 따른 레모네이드 판매량 데이터로 가정한다.
  • tf.tensor() 함수를 통해서 tensor의 형태로 과거의 데이터를 담은 원인과 결과 변수를 생성한다.
// Pass an array of values to create a vector.
tf.tensor([1, 2, 3, 4]).print();

 

2. 모델 모양 만들기

 

텐서플로.js API : https://js.tensorflow.org/api/latest/

tf.input()

tf.input({shape:[1]}) //shape프로퍼티에 입력값의 형태를 알려준다.
tf.layers.dense({ units: 1}).apply(x)

tf.layers

.Layers.apply()

const denseLayer = tf.layers.dense({
   units: 1,
   kernelInitializer: 'zeros',
   useBias: false
});

// Invoke the layer's apply() method with a [tf.Tensor](#class:Tensor) (with concrete
// numeric values).
const input = tf.ones([2, 2]);
const output = denseLayer.apply(input);

// The output's value is expected to be [[0], [0]], due to the fact that
// the dense layer has a kernel initialized to all-zeros and does not have
// a bias.
output.print();

3. 데이터로 모델 학습시키기

fitParam

epochs: 학습횟수

콜백함수가 호출될 때마다 epoch, logs(정확도가 들어있는 프로퍼티) 출력

이후 모델에 fit(학습)시킨다.

 

model.fit()

//Trains the model for a fixed number of epochs (iterations on a dataset).
fit(x,y, args?)

 

model.predict()

//Generates output predictions for the input samples.
predict(x, args?)

 

3000번의 횟수로 학습을 시킨다. 마치 love you 3000처럼

 

 

4. 모델 활용

  • 위에서 만든 모델을 활용하여 새로운 입력값에 대한 결과값을 예측한다. 어떤 값이 오더라도 학습한만큼은 정확하게 답을 내놓는 머신러닝의 위대함.
  • 학습한 모델에 새로운 값 '다음주결과'를 입력하였을 때 예측값이 loss 0.009 오차범위로 나오는 것을 확인할 수 있다.

2주차 소감>

  • 생활코딩 머신러닝 야학을 졸업했다. 생활코딩 덕분에 멀게만 느껴졌던 머신러닝을 기초부터 텐서플로를 통해 기존모델 활용, 나의 모델 만들기까지 해볼 수 있었다. 수업을 다 듣고 나니 머신러닝에 대한 알 수 없는 자신감이 샘솟는다. 정말 유익하고 세상에 이렇게 좋은 자료를 오픈해서 공유하는 분들이 있다니 멋있다. 머신러닝에 대해 알고 싶은 사람이라면 누구에게라도 추천하고 싶은 좋은 수업이었다.

 

모델 만들기 다음 과정 요약>

  • tfs-vis 를 통해 머신러닝 학습상황을 시각적으로 확인해본다. 시각적으로 움직이는 것이 역시 매력적이다.
  • 이후 보스톤집값 예측 모델을 만들어본다. 딥러닝에 해당하는 부분으로, 여러 변수를 모두 고려하여 최종적으로 예측결과가 나온 부분의 강의가 아주 흥미로웠다. 예전에 ms azure 를 활용해서 보스톤집값을 예측해봤는데 그때보다 더 코드 기반으로 돌아가는 모양을 확인할 수 있어서 좋았다.
  • 딥러닝이란 인공신경망에서 레이어를 더 깊게 쌓아서, 더 정확한 모델을 만드는 방법이다. 딥러닝스러운 코드 작성을 위해 기존에 만든 모델의 모양을 만드는 코드에 히든레이어를 추가하는 방법을 알아본다.

댓글