例2トレーニング


トレーニング機能

async function trainModel(model, inputs, labels, surface) {
  const batchSize = 25;
  const epochs = 100;
  const callbacks = tfvis.show.fitCallbacks(surface, ['loss'], {callbacks:['onEpochEnd']})
  return await model.fit(inputs, labels,
    {batchSize, epochs, shuffle:true, callbacks:callbacks}
  );
}

エポックは、モデルが実行する反復(ループ)の数を定義します。

model.fitは、ループを実行する関数です。

callbacksは、モデルがグラフィックを再描画するときに呼び出すコールバック関数を定義します。


モデルをテストする

モデルをトレーニングするときは、モデルをテストして評価することが重要です。

これを行うには、モデルがさまざまな入力に対して何を予測するかを調べます。

ただし、その前に、データの正規化を解除する必要があります。

正規化

let unX = tf.linspace(0, 1, 100);
let unY = model.predict(unX.reshape([100, 1]));

const unNormunX = unX.mul(inputMax.sub(inputMin)).add(inputMin);
const unNormunY = unY.mul(labelMax.sub(labelMin)).add(labelMin);

unX = unNormunX.dataSync();
unY = unNormunY.dataSync();

次に、結果を確認できます。

結果をプロットする

const predicted = Array.from(unX).map((val, i) => {
return {x: val, y: unY[i]}
});

// Plot the Result
tfPlot([values, predicted], surface1)