This instruction shows how to create a simple project to predict the y value of equation y = 1.2x + 5 based on TensorFLow.js
Create a webpage
Create a webpage ‘predict.html’:
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Traffic Flow Predictor</title>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
</head>
<body>
<div id="output"></div>
<script>
// Create Training Data
const xs = tf.tensor([0, 1, 2, 3, 4]);
const ys = xs.mul(1.2).add(5);
// Output xs and ys
document.getElementById('output').innerText = xs.dataSync();
document.getElementById('output').innerText+= "\n" + ys.dataSync();
</script>
</body>
</html>
Use web browser to open ‘predict.html’, if the TensorFlow.js is loaded correctly, you should see the following text:
0,1,2,3,4
5,6.199999809265137,7.400000095367432,8.600000381469727,9.800000190734863
Train the model
Use the following code to train the model.
// Define a Linear Regression Model
const model = tf.sequential();
model.add(tf.layers.dense({ units: 1, inputShape: [1] }));
// Specify Loss and Optimizer
model.compile({ loss: 'meanSquaredError', optimizer: 'sgd' });
// Train the Model
model.fit(xs, ys, { epochs: 500 }).then(() => { trainingCompleted() });
// Training completed
function trainingCompleted() {
document.getElementById('output').innerText += "\n" + "Model training completed!";
}
Use the model to predict the value of y when x = 10
// Use the model
function predict() {
let result = model.predict(tf.tensor([Number(10)]));
result.data().then(y => {
document.getElementById('output').innerText += "\n" + Number(y);
});
}
Source Code
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Traffic Flow Predictor</title>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
</head>
<body>
<div id="output"></div>
<script>
// Create Training Data
const xs = tf.tensor([0, 1, 2, 3, 4]);
const ys = xs.mul(1.2).add(5);
// Output xs and ys
document.getElementById('output').innerText = xs.dataSync();
document.getElementById('output').innerText += "\n" + ys.dataSync();
// Define a Linear Regression Model
const model = tf.sequential();
model.add(tf.layers.dense({ units: 1, inputShape: [1] }));
// Specify Loss and Optimizer
model.compile({ loss: 'meanSquaredError', optimizer: 'sgd' });
// Train the Model
model.fit(xs, ys, { epochs: 500 }).then(() => { trainingCompleted() });
// Training completed
function trainingCompleted() {
document.getElementById('output').innerText += "\n" + "Model training completed!";
predict();
}
// Use the model
function predict() {
let result = model.predict(tf.tensor([Number(10)]));
result.data().then(y => {
document.getElementById('output').innerText += "\n" + Number(y);
});
}
</script>
</body>
</html>