JavaScript for TensorFlow.JS

1. はじめに

1.1. ブラウザでTensorFlow.JSが動くようにする

ブラウザ(Google Chromeの最新版を推奨)でTensorFlow.JSが動くようにするには、下記のHTMLファイルを作成し、それと同じフォルダに置いた script.js というJavaScriptを書いたファイルにJaveScriptでコードを記述することで行う。実行結果は「開発者ツール(inspect)」のコンソール画面に表示される。

1.2. Deep Learningで頻出するJavaScriptのおさらい

1.2.1. 変数と宣言(var, let, const)

var : 通常の変数宣言(上書き可能)
let : ifやforといったブロックスコープ内でのみ有効(上書き可能)
const : ifやforといったブロックスコープ内でのみ有効(上書き不可能)

 

1.2.2. 非同期処理(async, await)

asyncは指定された処理を非同期で行うことを宣言し、awaitはasyncで指定された処理が実行結果を返す(コールバック)するまで待つことを宣言する。

 

1.2.3. データのマッピング(map)

JavaScriptのmapは配列データに使うメソッドであり、配列データの各要素1つずつに対し指定されたコールバック処理を実行し、その結果を新しい配列として返すことが出来ます。なお、mapと類似するメソッドにfilterとreduceがあるが、ここでは割愛する。

 
さらに、インデックス(配列の先頭要素(0番)から何番目か)の番号も使って下記のようにオブジェクトを要素に持たせることもでき、TensorFlow.JSでの処理に頻出する。

 

1.2.4. 配列の生成(Array.from)

Array.from(x)は下記のように「配列っぽい(インデックス、要素、要素数が記録された)」オブジェクトから正真正銘の配列を生成するメソッドです。

 
配列っぽいオブジェクトの各要素に対して処理を行わせるべくmapと合わせて用いた場合は

 
さらに、オブジェクトの中にオブジェクトが入ったような形式の配列もどきの場合は、配列もどきオブジェクトの各要素に対して処理を行わせるべくmapと合わせると下記のようにハンドルできる。

2. TensorFlow.JSで用いられる関数・クラスの基本

このチャプターでは別ページで示す「TensorFlow.js — Making Predictions from 2D Data」の内容が理解できるよう、その中で出現するTensorFlow.JSで用いられる関数・クラスを中心に説明します。

 

2.1. 行列・テンソル

2.1.1. 行列を作る

下記の方法1から3は全て同じ

 a =  \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ \end{bmatrix}

という行列aを作る。

方法1

方法2

方法3

 

2.1.2. 行列の変形

shapeを指定してTensorの再形成 reshape()

 
 b =  \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ \end{bmatrix}

 
行列の行と列を転置して転置行列を生成する transpose()

 
 b =  \begin{bmatrix} 1 & 3 & 5\\ 2 & 4 & 6\\ \end{bmatrix}

 

2.1.3. 行列の要素を得る

行列の各行を要素とする配列を得る

 
 b =  \begin{bmatrix} 1 & 2\\ \end{bmatrix} ,  \begin{bmatrix} 3 & 4\\ \end{bmatrix} ,  \begin{bmatrix} 5 & 6\\ \end{bmatrix}

 
行列の各値を要素とする配列を得る

 
 b =  \begin{bmatrix} 1, & 2, & 3, & 4, & 5, & 6\\ \end{bmatrix}

 

2.1.4. 行列の算術計算

行列の二乗を得る

 
 y =  \begin{bmatrix} 1, & 4, & 9, & 16\\ \end{bmatrix}

2.2. TensorFlow.JSのファンクション・クラス・メソッド(基本)

2.2.1 テンソル

tf.tensor2d()
tf.linspace()
tf.reshape()
dataSync()
arraySync()

 

2.2.2 モデル

tf.sequential()
compile()
fit()
predict()

 

2.2.3. レイヤー

tf.layers.dense()

 

2.2.4. 操作

tf.max()
tf.min()
tf.mul()
tf.sub()
tf.add()

 

2.2.5. 学習

tf.train.adam()
tf.losses.meanSquaredError()

 

2.2.6. パフォーマンス

tf.tidy()

 

2.2.7. 制約

 

2.2.8. イニシャライザー(初期化)

 

2.2.9. レギュラライザー(正則化)

 

2.2.10. データ

map()

 

2.2.11. ユーティリティー

tf.util.shuffle() = tf.shuffle()

 

2.2.12. ブラウザ

 

2.2.13. メトリックス(定量化指標)
English
English