제일 먼저 해야할 것은 과거의 데이터를 준비하는 것입니다. 이것을 코드로 나타내면 이렇습니다.
var 온도 = [20,21,22,23];
var 판매량 = [40,42,44,46];
그런데 tensorflow 에서는 이렇게 배열을 그대로 활용하지 못합니다. 배열을 텐서 라는 것으로 변환해주어야 합니다. 변환해 주는 코드는 이렇습니다.
var 원인 = tf.tensor(온도);
var 결과 = tf.tensor(판매량);
// 모델 모양 만들기
var X = tf.input( { shape:[ 1 ] } ); // 입력열의 개수 1개 . 모델에 입력할 값의 개수
var y = tf.layer.dense( {units : 1 } ).apply(x); // 결과열의 개수 1개 . 모델이 출력할 값의 개수
var model = tf.model( {inputs : X, Outputs: Y} );
// 모델 만들기
var compileParam = {
optimizer : tf.train.adam(),
loss : tf.losses.meanSquaredError
}
model.compile(compileParam);
/*
데이터로 모델을 학습합니다.
모델을 핏 한다고 한다.
위 코드 까지는 모델의 입력이 1개 출력이 1개 라는 모양만이 정의된 상태다.
핏 함수는 우리가 가진 구체적인 데이터를
모델에 적용하는 것이다.
*/
model.fit(원인, 결과, ).then(function(result))
{
}
/*
npm install @tensorflow/tfjs
<script src="https//cdn.jsdelivr.net/npm/@tensorflos/tfjs@1.0.0/dist/tf.min.js"> </script>
*/
//
let tf = require('@tensorflow/tfjs');
// console.log(tf);
// 1. 과거의 데이터를 준비합니다.
var 온도 = [20,21,22,23];
var 판매량 = [40,42,44,46];
var 원인 = tf.tensor(온도); // 데이터를 tensor 형태로 바꾼다. 독립변수
var 결과 = tf.tensor(판매량); // 데이터를 tensor 형태로 바꾼다. 종속변수
// 2. 모델의 모양을 만든다.
var x = tf.input({shape : [1]}) ; // 모델이 몇개의 입력을 받는지
var y = tf.layers.dense({units : 1}).apply(x); // 모델이 몇개의 출력을 반환하는지
var model = tf.model({inputs : x , outputs : y}); // 이 모델을통해 학습이나 예측작업을 수행할 것이다.
var compileParam = {
optimizer : tf.train.adam(), // 좀더 효율적으로 모델을 만드는 방법을 지정
loss : tf.losses.meanSquaredError // 얼마나 모델이 잘 만들어졌는지 측정할 방법을 지정
};
model.compile(compileParam); // 모델 확정. 모델을 만들기!
// 3. 데이터로 모델을 학습시킨다.
/*
실제 내용이 되는, 수학적인 공식을 만드는 Fit
Trying, Learning, 학습 이라고도 한다
*/
var fitParam = { epochs : 10000 }; // 몇번을 학습할지
// var fitParam = { epochs:100, callbacks : {onEpochEnd : function(epoch,logs){'epoch', epoch} } }
model.fit(원인,결과,fitParam)
.then((result)=>{
// 4. 모델을 이용합니다.
// 4.1 기존의 데이터를 이용
var 예측한결과 = model.predict(원인); // 예측한 결과를 tensor 로 반환한다.
예측한결과.print();
})