TensorFlow 数据集因数据过多而崩溃

TensorFlow dataset collapses with too much data

我正在使用最简单的模型在 Node.js:

中制作这个测试用例
  model = tf.sequential();
  model.add(tf.layers.dense({units: 1, inputShape: [1]}));

并使用公式 X+X=Y 对其进行训练以进行测试:

  let xsData = [];
  let ysData = [];
  for (let i = 1; i < 17; i++) { // Please note the 16 iterations here!
    xsData.push(i);
    ysData.push(i+i);
  }

  const xs = tf.tensor2d(xsData, [xsData.length, 1]);
  const ys = tf.tensor2d(ysData, [ysData.length, 1]);

  await model.fit(xs, ys, {epochs: 500});

完成后,我正在使用数字 10 测试模型:

  model.predict(tf.tensor2d([10], [1, 1])).dataSync();

这给了我 大约 20 的值。这是正确的 (10+10=20).

现在问题:每当我将迭代次数更改为 17+ 时,模型就会崩溃。我测试相同的数字 (10),输出结果为 -1.9837386463351284e+25 等。更高的数据集迭代会导致 InfinityNaN.

有人知道这里发生了什么吗?如果有人能指出我正确的方向,那就太好了。提前谢谢你。

在回归中使用 SGD 可能会很棘手,因为 输出没有上限 并且可能导致 NaN 值损失,换句话说梯度爆炸等.

将优化器更改为 AdamRMSProp 大多数时候都有效。