I am completely new to Machine learning and also to tensorflow.js, I am trying to predict the values of the next set but it is giving me "NaN" in result. What am I doing wrong ?
Following this Github example
async function myFirstTfjs(arr) {
// Create a simple model.
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [2]}));
// Prepare the model for training: Specify the loss and the optimizer.
model.compile({
loss: 'meanSquaredError',
optimizer: 'sgd'
});
const xs = tf.tensor([[1,6],
[2,0],
[3,1],
[4,2],
[5,3],
[6,4],
[7,5],
[8,6],
[9,0],
[10,1],
[11,2],
[12,3],
[13,4],
[14,5],
[15,6],
[16,0],
[17,1],
[18,2],
[19,3],
[20,4],
[21,5],
[22,6],
[23,0],
[24,1],
[25,2],
[26,3]]);
const ys = tf.tensor([104780,30280,21605,42415,32710,30385,35230,97795,31985,34570,35180,30095,36175,57300,104140,30735,28715,36035,34515,42355,38355,110080,26745,35315,40365,30655], [26, 1]);
// Train the model using the data.
await model.fit(xs, ys, {epochs: 500});
// Use the model to do inference on a data point the model hasn't seen.
model.predict(tf.tensor(arr, [1, 2])).print();
}
myFirstTfjs([28,5]);
What's happening is that the large values in ys
are leading to a very large error. That large error, in combination with the (default) learning rate, are causing the model to overcorrect and be unstable. The model will converge if you lower the learning rate.
const learningRate = 0.0001;
const optimizer = tf.train.sgd(learningRate);
model.compile({
loss: 'meanSquaredError',
optimizer: optimizer,
});
Try convert your output to more readable and change your optimizer
var pred = model.predict(tf.tensor(arr, [1, 2]));
var readable_output = pred.dataSync();
console.log(readable_output);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.