메모내용
Nav

모델을 만드는 방법

1. 데이터 준비하기

제일 먼저 해야할 것은 과거의 데이터를 준비하는 것입니다. 이것을 코드로 나타내면 이렇습니다.

                        
var 온도 = [20,21,22,23];
var 판매량 = [40,42,44,46];
                        
                    

그런데 tensorflow 에서는 이렇게 배열을 그대로 활용하지 못합니다. 배열을 텐서 라는 것으로 변환해주어야 합니다. 변환해 주는 코드는 이렇습니다.

                        
var 원인 = tf.tensor(온도);
var 결과 = tf.tensor(판매량);
                        
                    

2. 모델의 모양 만들기

                        
// 모델 모양 만들기

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);
                        
                    

3. 모델 학습하기

                        
/*
    데이터로 모델을 학습합니다.
    모델을 핏 한다고 한다.
    위 코드 까지는 모델의 입력이 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();
    })