gpt4 book ai didi

javascript - 使用 TensorFlowJS 进行简单线性回归

转载 作者:行者123 更新时间:2023-11-30 20:24:44 24 4
gpt4 key购买 nike

我正在尝试为项目获取一些线性回归。因为我习惯了 Javascript,所以我决定尝试使用 TensorFlowJS。

我正在遵循他们网站上的教程并观看了一些解释其工作原理的视频,但我仍然不明白为什么我的算法没有返回我期望的结果。

这是我正在做的:

// Define a model for linear regression.
const model = tf.sequential();
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'});

// Generate some synthetic data for training.
const xs = tf.tensor1d([1, 2, 3, 4]);
const ys = tf.tensor1d([1, 2, 3, 4]);

// Train the model using the data.
model.fit(xs, ys).then(() => {
// Use the model to do inference on a data point the model hasn't seen before:
// Open the browser devtools to see the output
const output = model.predict(tf.tensor2d([5], [1,1]));
console.log(Array.from(output.dataSync())[0]);
});

我在这里尝试创建一个线性图,其中输入应始终等于输出。

我试图预测输入 5 会得到什么,但输出似乎是随机的。

它在 codepen 上,所以你可以试试:https://codepen.io/anon/pen/RJJNeO?editors=0011

最佳答案

您的模型仅在一个时期(一个训练周期)后进行预测。结果损失仍然很大,导致预测不准确。

模型的权重随机初始化。所以只有一个时期,预测是非常随机的。这就是为什么需要训练多个时期,或者在每批之后更新权重(这里也只有一批)。要查看训练期间的损失,您可以这样更改拟合方法:

model.fit(xs, ys, { 
callbacks: {
onEpochEnd: (epoch, log) => {
// display loss
console.log(epoch, log.loss);
}
}}).then(() => {
// make the prediction after one epoch
})

要获得准确的预测,可以增加epochs的数量

 model.fit(xs, ys, {
epochs: 50,
callbacks: {
onEpochEnd: (epoch, log) => {
// display loss
console.log(epoch, log.loss);
}
}}).then(() => {
// make the prediction after one epoch
})

这是一个片段,展示了增加轮数将如何帮助模型表现良好

// Define a model for linear regression.
const model = tf.sequential();
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'});

// Generate some synthetic data for training.
const xs = tf.tensor1d([1, 2, 3, 4]);
const ys = tf.tensor1d([1, 2, 3, 4]);

// Train the model using the data.
model.fit(xs, ys, {
epochs: 50,
callbacks: {
onEpochEnd: (epoch, log) => {
console.log(epoch, log.loss);
}
}}).then(() => {
// Use the model to do inference on a data point the model hasn't seen before:
// Open the browser devtools to see the output
const output = model.predict(tf.tensor2d([6], [1,1]));
output.print();
});
<html>
<head>
<!-- Load TensorFlow.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/tensorflow/0.12.4/tf.js"> </script>
</head>

<body>
</body>
</html>

关于javascript - 使用 TensorFlowJS 进行简单线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51043855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com