JS로 만드는 AI : 5.1~5.6

KHW·2021년 1월 5일
0

데이터분석

목록 보기
6/13
post-custom-banner

전체 코드

  
<!DOCTYPE html>
<html>

<head>
    <title>TensorFlow.js Tutorial - lemon</title>

    <!-- Import TensorFlow.js -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script>
    
</head>

<body>
    <script>
        // 1. 과거의 데이터를 준비합니다. 
        var 온도 = [20,21,22,23];
        var 판매량 = [40,42,44,46];
        var 원인 = tf.tensor(온도);
        var 결과 = tf.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. 데이터로 모델을 학습시킵니다. 
        var fitParam = { epochs: 6000} 
        // var fitParam = { epochs: 100, callbacks:{onEpochEnd:function(epoch, logs){console.log('epoch', epoch, logs);}}} // loss 추가 예제
        model.fit(원인, 결과, fitParam).then(function (result) {
            
            // 4. 모델을 이용합니다. 
            // 4.1 기존의 데이터를 이용
            var 예측한결과 = model.predict(원인);
            예측한결과.print();

        });  

        // 4.2 새로운 데이터를 이용
         var 다음주온도 = [15,16,17,18,19]
         var 다음주원인 = tf.tensor(다음주온도);
         var 다음주결과 = model.predict(다음주원인);
         다음주결과.print();
    </script>
</body>

</html>

1) tensorflow.js를 사용하기 위해서는 배열을 tensor로 바꾸어 주어야한다.

tf.tensor(배열)

2) 해당 모델에 따라 X(모델에 입력할 값의 갯수),Y(모델에 출력할 값의 갯수)

3) model.compile을 통해 실제로 모델을 만들어낸다.

독립변수(shape:[1])가 하나고 종속변수(units:1)가 하나인 model)
ex) 모델 통인데 입력이 한개이고 출력이 한 개인 통

4) model.fit을 통해 만들어 낸 모델을 학습시킨다.

세번째 인자로 epoch를 걸어 필요한 횟수만큼 반복한다.

ex) 모델 통인데 안에서 이런저런 계산을 통해 입력을 다른 결과로 바꾸는 통

5) 즉, 원인과 결과를 통한 model이 epoch의 반복 횟수를 통해서 만들어진 model을 model.predict(tensor형태 배열)를 통해 결과를 예측한 것을 출력시킨다.

● 정리

  1. 관련 배열 데이터를 tensor형태로 변환한 변수 생성 (원인,결과)
  2. 독립변수와 종속변수에 따른 결과 형태를 담은 변수 생성 (X,Y)
  3. model.compile을 통해 모델생성
  4. model.fit을 통해 원인과 결과에 따른 epoch 반복한 학습모델생성
  5. 필요에 따라 학습모델을 model.predict(tensor형태) 이용한다.

실제 결과


해당 원인인 20,21,22,23을 통해 model을 학습한 결과 거의 40,42,44,46과 같은 값이 나타난다.

주의

tensorflow.js의 경우 브라우저에서 동작하는 방법과 node.js에서 동작하는 방법이 있는데 브라우저의 경우 시간이 너무 많이 든다. 따라서 node.js의 결과에서 보는 것을 추천

// 1. 과거의 데이터를 준비합니다.
var tf = require('@tensorflow/tfjs');
var 온도 = [20,21,22,23];
var 판매량 = [40,42,44,46];
var 원인 = tf.tensor(온도);
var 결과 = tf.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. 데이터로 모델을 학습시킵니다.
var fitParam = { epochs: 6000}
// var fitParam = { epochs: 100, callbacks:{onEpochEnd:function(epoch, logs){console.log('epoch', epoch, logs);}}} // loss 추가 예제
model.fit(원인, 결과, fitParam).then(function (result) {

    // 4. 모델을 이용합니다.
    // 4.1 기존의 데이터를 이용
    var 예측한결과 = model.predict(원인);
    예측한결과.print();

});

node.js의 경우 기본적으로 npm install @tensorflow/tfjs 해당 내용을 터미널에서 실행해야하고 맨앞에 tf에 대한 require이 필요하다.

출처

생활코딩

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자
post-custom-banner

0개의 댓글