tensorflow 数字的平方未被Testorflow js训练

hwazgwia  于 2023-02-24  发布在  其他
关注(0)|答案(1)|浏览(119)

我用输入的平方来训练模型

model.add(tf.layers.dense({units: 1, inputShape: [1]}));

// Prepare the model for training: Specify the loss and the optimizer.
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

const inputs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
const outputs =  [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256]

// Generate some synthetic data for training. (y = x*x)
const xs = tf.tensor2d(inputs, [inputs.length, 1]);
const ys = tf.tensor2d(outputs, [outputs.length, 1]);

console.log(xs.print())
console.log(ys.print())

// Train the model using the data.
model.fit(xs, ys, {epochs: 250}).then(() => {
  model.predict(tf.tensor2d([70], [1, 1])).print();
});

但是,输出仍然不正确或接近正确。

nukf8bse

nukf8bse1#

问题在于模型。
您希望通过线性回归了解非线性关系(您的模型是线性的)。
为了更有效地学习,你需要增加更多的层次和它们之间的非线性激活函数。

  • 例如 *
model.add(tf.layers.dense({units: 1, inputShape: [1], activation> 'relu'}));
model.add(tf.layers.dense({units: 2, activation= 'relu'}));
model.add(tf.layers.dense({units: 1, activation= 'relu'}));

相关问题