NeuroWhAI의 잡블로그

[TensorFlow] TensorFlow.js 소개 + 예제 실습 본문

개발 및 공부/라이브러리&프레임워크

[TensorFlow] TensorFlow.js 소개 + 예제 실습

NeuroWhAI 2018. 3. 31. 13:56





뒷북이면 둥둥이라고 해주세요.

웹 브라우저에서 동작하는 TensorFlow가 나왔습니다.
이전에도 가능은 했을지 모르겠지만 공식적으로 발표가 나온것 같습니다.
+ 내용 추가) 이전부터 있었던 deeplearn.js가 TensorFlow.js로 이름을 바꾼거라고 하네요.

크게 기능을 보자면
  • 학습된 모델을 불러와서 쓸 수 있다.
  • 불러온 모델을 학습시킬 수 있다.
  • 직접 모델을 작성할 수 있다.
그러니까 다 된다는 말이죠 ㅋㅋ

간단하게 코드의 모습이나 디자인 컨셉을 보고싶으시면
여기서 보시면 됩니다.
눈에 띄는건 js의 메모리 관리 특성상 필요한 dispose, tidy 같은거?

공식 사이트에서 가장 처음 소개하는 선형회귀 예제를 직접 돌려봅시다.

코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!doctype html>
<html>
<head>
    <title>TF.js Test</title>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.6.1"></script>
    <script type="text/javascript">
        // 선형회귀 모델 생성
        const model = tf.sequential();
        model.add(tf.layers.dense({units: 1, inputShape: [1]}));
 
        // 학습을 위한 준비 : 손실 함수와 최적화 함수를 설정
        model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
 
        // 학습 데이터 생성
        const xs = tf.tensor2d([1234], [41]);
        const ys = tf.tensor2d([1357], [41]);
 
        // 데이터를 사용해서 학습
        model.fit(xs, ys).then(() => {
            // 학습된 모델을 가지고 추론
            model.predict(tf.tensor2d([5], [11])).print();
        });
    </script>
</head>
<body>
    콘솔을 확인하세요.
</body>
</html>
cs

결과: Chrome(버전 65.0.3325.181 32비트)
Tensor
    [[8.3760147],]
(9가 나와야 맞는거 같은데 학습이 덜 되었나 봅니다)

API 생긴게 케라스랑 비슷한거 같기도?

참고로 tf.tensor2d는 2차원 텐서를 만드는 함수로서
(values, shape?, dtype?) 파라미터를 받습니다.
그러니까 코드에서 tf.tensor2d([1, 2, 3, 4], [4, 1]) 이렇게 하면 아래와 같은 텐서가 나옵니다.
Tensor
    [[1],
     [2],
     [3],
     [4]]

저는 웹쪽에서 개발하는 경우가 잘 없어서 실제로 쓸지는 모르겠지만
인터넷과 최신 웹 브라우저만 있으면 머신러닝 코드를 작성 할 수 있으며
클라이언트에서 학습이 진행된다는게 좋은 것 같습니다.
Electron 같은걸 써서 js로 클라이언트 앱을 만들때 유용할 것 같습니다.







Comments