!npm install -g npm@latest !npm cache verify !npm install -g --unsafe-perm ijavascript !ijsinstall --install=global !jupyter-kernelspec list var { spawn } = require('child_process') var sh = (cmd) => { $$.async() var sp = spawn(cmd, { cwd: process.cwd(), stdio: 'pipe', shell: true, encoding: 'utf-8' }) sp.stdout.on('data', data => console.log(data.toString())) sp.stderr.on('data', data => console.error(data.toString())) sp.on('close', () => $$.done()) } var run_async = async (pf) => { $$.async() await pf() $$.done() } sh('npm init -y') sh('npm install @tensorflow/tfjs-node') sh('npm install plotly-notebook-js') var tf = require('@tensorflow/tfjs-node') console.log(tf.backend().isUsingGpuDevice) var trainData = { sizeMB: [0.080, 9.000, 0.001, 0.100, 8.000, 5.000, 0.100, 6.000, 0.050, 0.500, 0.002, 2.000, 0.005, 10.00, 0.010, 7.000, 6.000, 5.000, 1.000, 1.000], timeSec: [0.135, 0.739, 0.067, 0.126, 0.646, 0.435, 0.069, 0.497, 0.068, 0.116, 0.070, 0.289, 0.076, 0.744, 0.083, 0.560, 0.480, 0.399, 0.153, 0.149] } var testData = { sizeMB: [5.000, 0.200, 0.001, 9.000, 0.002, 0.020, 0.008, 4.000, 0.001, 1.000, 0.005, 0.080, 0.800, 0.200, 0.050, 7.000, 0.005, 0.002, 8.000, 0.008], timeSec: [0.425, 0.098, 0.052, 0.686, 0.066, 0.078, 0.070, 0.375, 0.058, 0.136, 0.052, 0.063, 0.183, 0.087, 0.066, 0.558, 0.066, 0.068, 0.610, 0.057] } var trainTensors = { sizeMB: tf.tensor2d(trainData.sizeMB, [20, 1]), timeSec: tf.tensor2d(trainData.timeSec, [20, 1]) } var testTensors = { sizeMB: tf.tensor2d(testData.sizeMB, [20, 1]), timeSec: tf.tensor2d(testData.timeSec, [20, 1]) } var dataTraceTrain = { x: trainData.sizeMB, y: trainData.timeSec, name: 'trainData', mode: 'markers', type: 'scatter', marker: {symbol: "circle", size: 8} }; var dataTraceTest = { x: testData.sizeMB, y: testData.timeSec, name: 'testData', mode: 'markers', type: 'scatter', marker: {symbol: "triangle-up", size: 10} }; var Plot = require('plotly-notebook-js') var NotebookPlot = Plot.createPlot().constructor NotebookPlot.prototype._toHtml = NotebookPlot.prototype.render Plot.createPlot([dataTraceTrain, dataTraceTest], { width: 700, title: 'File download duration', xaxis: { title: 'size (MB)' }, yaxis: { title: 'time (sec)' } }) var model = tf.sequential(); model.add(tf.layers.dense({ units: 1, inputShape: [1], })) model.compile({ optimizer: 'sgd', loss: 'meanAbsoluteError' }) var k = 0 var b = 0 model.setWeights([tf.tensor2d([k], [1, 1]), tf.tensor1d([b])]) model.fit(trainTensors.sizeMB, trainTensors.timeSec, {epochs: 10}) model.evaluate(testTensors.sizeMB, testTensors.timeSec).print() model.predict(tf.tensor2d([[7.8]])).print() k = model.getWeights()[0].dataSync()[0] b = model.getWeights()[1].dataSync()[0]; console.log(k, b) var traceLine = { x: [0, 10], y: [b, b + (k * 10)], name: 'trace line', mode: 'lines' } Plot.createPlot([dataTraceTrain, dataTraceTest, traceLine], { width: 700, title: 'File download duration', xaxis: { title: 'size (MB)' }, yaxis: { title: 'time (sec)' } })