🔎

TensorFlow.js の optimizer.minimize が最適化する変数はどれか

2020/11/05に公開

tfjs-examples 内の polynomial-regression-core/index.js を読んでいて
optimizer.minimize弄る対象とする変数 がどうやって決まるのか分からなかった。

結論

optimizer.minimize 内で 使用している変数を調べる関数 を呼んでる。
上記 index.js の 103 ~ 107 行目を下記のように変更しても動きは同じ。

optimizer.minimize(() => {
  // Feed the examples into the model
  const pred = predict(xs);
  return loss(pred, ys);
}, false, [a, b, c, d]); // 3 つ目の引数が varList

読んだコード

Optimizer の定義。

optimizers/optimizer.ts

試したこと

44 行目に下記のコードを追加した。

const e = tf.variable(tf.scalar(Math.random()));

実行したが train 前後で e は変化しなかった。

optimizer.minimize の 3 つ目の引数に [a, b, c] を指定した。

107 行目を下記に変更。

}, false, [a, b, c]);

train 前後で d が変化しなくなった。

GitHubで編集を提案

Discussion