Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Layer (type) Output shape Param #
- =================================================================
- dense_Dense1 (Dense) [null,1] 2
- =================================================================
- Total params: 2
- Trainable params: 2
- Non-trainable params: 0
- const tf = require("@tensorflow/tfjs-node")
- function convert(c){
- return (c*1.8)+32 // Convert celsius to fahrenheit
- }
- var celsius = []
- var fahrenheit = []
- for (let i = 0; i < 20; i++) {
- var r = 100; // Keeping this only value to ensure that Tf knows the answer I also have tried with 20 different values but doesn't work
- celsius.push([r]) // Shape [20,1]
- fahrenheit.push([convert(r)]) // Push the answer (212) to the fahrenheit array
- }
- var model = tf.sequential();
- model.add(tf.layers.dense({inputShape:[1], units: 1}))
- async function trainModel(model, inputs, labels) {
- // Prepare the model for training.
- model.compile({
- optimizer: tf.train.adam(),
- loss: tf.losses.meanSquaredError,
- metrics: ['accuracy'], // Accuracy = 0
- });
- model.summary();
- const epochs = 500;
- return await model.fit(inputs, labels, {
- epochs,
- batchSize: 20,
- verbose: false // Nothing interesting with verbose
- });
- }
- c = tf.tensor(celsius)
- f = tf.tensor(fahrenheit)
- var training = trainModel(model, c, f)
- training.then(function(args){
- var prediction = model.predict(tf.tensor([[100]]));
- prediction.print(); // Prints a random number
- console.log("Real answer = "+convert(100))
- })
- Tensor
- [[65.9411697],]
- Real answer = 212
- const tf = require("@tensorflow/tfjs-node")
- const nr_epochs=500;
- function convert(c){
- return (c*1.8)+32 // Convert celsius to fahrenheit
- }
- var celsius = []
- var fahrenheit = []
- for (let i = 0; i < 100; i++) {
- var r = 100; // Keeping this only value to ensure that Tf knows the answer
- celsius.push(i) // Shape [20,1]
- fahrenheit.push(convert(i)) // Push the answer (212) to the fahrenheit array
- }
- let train = async (xy, ys) => {
- const model = tf.sequential();
- model.add(tf.layers.dense({units: 1, inputShape: [1]}));
- model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
- await model.fit(xs,ys,{epochs: nr_epochs})
- return model;
- }
- let predict = (model, n) => {
- const predicted = model.predict(tf.tensor2d([n],[1,1]));
- return predicted;
- }
- const xs = tf.tensor2d(celsius.slice (0,15), [15,1]);
- const ys = tf.tensor2d(fahrenheit.slice (0,15), [15,1]);
- (async () => {
- let trained = await train (xs,ys);
- for (let n of [4,6,12]) {
- let predicted = predict (trained, n).dataSync ();
- console.log (`Value: ${n} Predicted: ${predicted [0]}`)
- }
- })()
- Value: 4 Predicted: 38.01055908203125
- Value: 6 Predicted: 42.033267974853516
- Value: 12 Predicted: 54.101402282714844
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement