Translate

2018年5月21日月曜日

TensorFlow.js(0.11.1) の Getting Started を翻訳してみる

今年のTensorFlow DevSummit の目玉のひとつである
TensorFlow.js をそろそろやってみようかな、
とおもいまずGetting Started ページを読んでみることにした。

といっても現時点(v0.11.1時点)はTensorFlow.jsトップページの下半分
になっている。

以下、勝手に翻訳した文章だが、参照される方は
at your own risk で参照してください。

----

Getting Started

JavaScriptプロジェクトで TensorFlow.js を取得するには、 scriptタグを使用する方法と、NPMからインストールし、ParcelWebPackRollup などのビルドツールを使用する方法の2つの方法があります。

script タグ経由

HTMLファイルに以下のコードを追加します:

<html>
  <head>
    <!-- TensorFlow.js のロード -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.11.1"> </script>

    <!-- 下のscriptタグ内にコードを挿入します。外部の.jsファイルを使用することもできます -->
    <script>
      // 'import'ステートメントがないことに注目してください。 
      // ひとつ上のscriptタグのため、 'tf'はindex-pageで利用できます。

      // 線形回帰モデルの定義
      const model = tf.sequential();
      model.add(tf.layers.dense({units: 1, inputShape: [1]}));

      // トレーニング用モデルの準備:損失値とオプティマイザを指定します
      model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

      // トレーニング用合成データを生成します
      const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
      const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

      // データを使ってモデルをトレーニングします
      model.fit(xs, ys).then(() => {
        // モデルが以前に見たことがないデータポイントについて推論を行うには、
        // モデルを使用します:
        // ブラウザの開発ツールを開いて出力を確認してください
        model.predict(tf.tensor2d([5], [1, 1])).print();
      });
    </script>
  </head>

  <body>
  </body>
</html>

あなたのブラウザでHTMLファイルを開くと、コードが実行されます!

 NPM経由


yarn または npm を使って TensorFlow.js をプロジェクトに追加します。注意: ES2017構文( `import`など)を使用しているため、このワークフローでは、コードをブラウザが理解できるものに変換するために bundler/transpiler を使用していることを前提としています。 Parcel を使用してコードを構築する方法については、 を参照してください。Parcel など、好きなビルドツールを自由に使うこともできます。
yarn add @tensorflow/tfjs
npm install @tensorflow/tfjs


あなたのメイン js ファイルには、次のように記述します:

  import * as tf from '@tensorflow/tfjs';

  // 線形回帰モデルの定義
  const model = tf.sequential();
  model.add(tf.layers.dense({units: 1, inputShape: [1]}));

  // モデルのトレーニングの準備:損失値およびオプティマイザの指定
  model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

  // トレーニング用合成データの生成
  const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
  const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

  // データを使ってモデルをトレーニング
  model.fit(xs, ys).then(() => {
    // モデルが以前に見たことがないデータポイントについて推論を行うには、
    // モデルを使用します:
    model.predict(tf.tensor2d([5], [1, 1])).print();
  });




詳細は、 チュートリアルサンプルドキュメントを参照してください。

助けが必要ですか?連絡を取りたいですか?

ライブラリを使用してバグが発生した場合 は、GitHubリポジトリに問題を提出してください。また 、TensorFlow.jsを使用について質問をしたり、技術的な助けを借りたり、何をしているのかを聞いたりする共有するコミュニティメーリングリストもあります。TensorFlow.jsのニュースを最新に保つには、twitterで私たちをフォローしてください。または announcement only のメーリングリストに参加してください。
 ------

過去のTensorFlow mobileやTensorFlow Lite は、
inference(推論)ブロック、つまり予測だけをJavaScriptで実行させようとしていたけど、
TensorFlow.js は TensorFlow本体をJavaScriptコードで書かせるというものだ。

なので上記のサンプルはありものの(pre-madeな)回帰分析を
使ってトレーニングさせるところをGetting Started で選んでいる。

HTMLのscriptタブで実装する場合は
HTMLファイルがパースされるクライアントPC上で実行されるが
どうもクライアントPCにNVIDIAドライバとGPUが乗っていれば
それを使うらしい..

とすると、
DockerホストがGPU搭載機であれば、
NVIDIAドライバをホストにインストール済みで、
nvidia docker2 がインストール済みで、
tensorflow/tensorflow-gpu をDockerfileとかでnode/npm動作するように加工しておけば
コンテナでもGPUが使えるわけだ..


node公式かtensorflow公式コンテナで誰か作ってくれるまで
待つとしようかな..














0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...