bbjbjb

bbjbjb

Written by morten solheim | Published 10 months ago

bjbkvkvk . hhvjhvjvgggc ergefcbwvbkjcbkwe c cw f ckwe fkbc jl wgæha sv æj rwaghbæhabv rhbæhbvræwhæwbægbwbgæiwbfæk . wæreag æiv ræh væhw ræ æaw gv aærhg æawb rgæh aeræhbgjherbgjfhb vehjr '


TensorFlow.js i Node


TensorFlow CPU


TensorFlow CPU-pakken kan importeres som følger:

import * as tf from '@tensorflow/tfjs-node'


Når du importerer TensorFlow.js fra denne pakke, accelereres det modul, du får, af TensorFlow C-binæret og køres på CPU'en. TensorFlow på CPU'en bruger hardwareacceleration til at fremskynde den lineære algebraberegning under hætten.

Denne pakke fungerer på Linux-, Windows- og Mac-platforme, hvor TensorFlow understøttes.

Bemærk: Du behøver ikke at importere '@ tensorflow / tfjs' eller føje det til din package.json. Dette importeres indirekte af nodebiblioteket.

TensorFlow GPU


TensorFlow GPU-pakken kan importeres som følger:

import * as tf from '@tensorflow/tfjs-node-gpu'


Ligesom CPU-pakken vil det modul, du får, blive accelereret af TensorFlow C-binæret, men det kører tensor-operationer på GPU'en med CUDA og dermed kun linux. Denne binding kan være mindst en størrelsesorden hurtigere end de andre bindingsmuligheder.

Bemærk: denne pakke fungerer i øjeblikket kun med CUDA. Du skal have CUDA installeret på din maskine med et NVIDIA-grafikkort, før du går denne rute.
Bemærk: Du behøver ikke at importere '@ tensorflow / tfjs' eller føje det til din package.json. Dette importeres indirekte af nodebiblioteket.

Vanilla CPU


Den version af TensorFlow.js, der kører med vanilje-CPU-operationer, kan importeres som følger:

import * as tf from '@tensorflow/tfjs'


Denne pakke er den samme pakke som det, du ville bruge i browseren. I denne pakke køres operationerne i vanilje JavaScript på CPU'en. Denne pakke er meget mindre end de andre, fordi den ikke har brug for TensorFlow-binæren, men den er meget langsommere.

Da denne pakke ikke er afhængig af TensorFlow, kan den bruges i flere enheder, der understøtter Node.js end kun Linux, Windows og Mac.

Produktionsovervejelser


Node.js-bindingerne giver en backend til TensorFlow.js, der implementerer operationer synkront. Det betyder, at når du kalder en operation, tf.matMul(a, b)blokerer den for eksempel hovedtråden, indtil handlingen er afsluttet.

Af denne grund er bindingerne i øjeblikket velegnet til scripts og offline opgaver. Hvis du vil bruge Node.js-bindinger i en produktionsapplikation, ligesom en webserver, skal du oprette en jobkø eller indstille arbejdertråde, så din TensorFlow.js-kode ikke blokerer hovedtråden.

API'er


Når du importerer pakken som tf i en af ​​ovenstående indstillinger, vises alle de normale TensorFlow.js-symboler på det importerede modul.

tf.browser

I den normale TensorFlow.js-pakke kan symbolerne i tf.browser.*navneområdet ikke bruges i Node.js, da de bruger browser-specifikke API'er.

I øjeblikket er disse:

  • tf.browser.fromPixels
  • tf.browser.toPixels


tf.node

De to Node.js-pakker indeholder også et navneområde tf.node, der indeholder nodespecifikke API'er.

TensorBoard er et bemærkelsesværdigt eksempel på Node.js-specifikke API'er.

Et eksempel på eksport af resume til TensorBoard i Node.js:

const model = tf.sequential();
model.add(tf.layers.dense({ units: 1, inputShape: [200] }));
model.compile({
  loss: 'meanSquaredError',
  optimizer: 'sgd',
  metrics: ['MAE']
});


// Generate some random fake data for demo purpose.
const xs = tf.randomUniform([10000, 200]);
const ys = tf.randomUniform([10000, 1]);
const valXs = tf.randomUniform([1000, 200]);
const valYs = tf.randomUniform([1000, 1]);


// Start model training process.
async function train() {
  await model.fit(xs, ys, {
    epochs: 100,
    validationData: [valXs, valYs],
    // Add the tensorBoard callback here.
    callbacks: tf.node.tensorBoard('/tmp/fit_logs_1')
  });
}
train();


RELATED BLOGS