Heim  >  Artikel  >  Web-Frontend  >  JavaScript Machine Learning: Erstellen Sie ML-Modelle im Browser

JavaScript Machine Learning: Erstellen Sie ML-Modelle im Browser

王林
王林nach vorne
2023-09-10 09:45:021220Durchsuche

JavaScript 机器学习:在浏览器中构建 ML 模型

Maschinelles Lernen (ML) hat verschiedene Branchen revolutioniert und es Computern ermöglicht, auf der Grundlage von Mustern und Daten zu lernen und Vorhersagen zu treffen. Traditionell werden Modelle für maschinelles Lernen auf Servern oder Hochleistungsmaschinen erstellt und ausgeführt. Mit der Weiterentwicklung der Webtechnologie ist es nun jedoch möglich, ML-Modelle mithilfe von JavaScript direkt im Browser zu erstellen und bereitzustellen.

In diesem Artikel erkunden wir die spannende Welt des maschinellen Lernens in JavaScript und erfahren, wie man ML-Modelle erstellt, die im Browser ausgeführt werden können.

Erfahren Sie mehr über maschinelles Lernen

Maschinelles Lernen ist eine Teilmenge der künstlichen Intelligenz (KI), die sich auf die Erstellung von Modellen konzentriert, die aus Daten lernen und Vorhersagen oder Entscheidungen treffen können. Es gibt zwei Hauptarten des maschinellen Lernens: überwachtes Lernen und unüberwachtes Lernen.

Überwachtes Lernen beinhaltet das Trainieren eines Modells anhand gekennzeichneter Daten, bei denen die Eingabemerkmale und entsprechenden Ausgabewerte bekannt sind. Das Modell lernt Muster aus gekennzeichneten Daten, um Vorhersagen zu neuen, unsichtbaren Daten zu treffen.

Unüberwachtes Lernen hingegen befasst sich mit unbeschrifteten Daten. Das Modell entdeckt versteckte Muster und Strukturen in Daten ohne vordefinierte Bezeichnungen.

JavaScript-Bibliothek für maschinelles Lernen

Um mit dem maschinellen Lernen von JavaScript zu beginnen, befolgen Sie diese Schritte -

Schritt 1: Node.js installieren

Node.js ist eine JavaScript-Laufzeitumgebung, die es uns ermöglicht, JavaScript-Code außerhalb eines Webbrowsers auszuführen. Es stellt die Tools und Bibliotheken bereit, die für die Verwendung von TensorFlow.js erforderlich sind.

Schritt 2: Richten Sie das Projekt ein

Öffnen Sie nach der Installation von Node.js Ihren bevorzugten Code-Editor und erstellen Sie ein neues Verzeichnis für Ihr ML-Projekt. Navigieren Sie über die Befehlszeile oder das Terminal zum Projektverzeichnis.

Schritt 3: Initialisieren Sie das Node.js-Projekt

Führen Sie in der Befehlszeile oder im Terminal den folgenden Befehl aus, um ein neues Node.js-Projekt zu initialisieren -

npm init -y

Dieser Befehl erstellt eine neue package.json-Datei zum Verwalten von Projektabhängigkeiten und -konfigurationen.

Schritt 4: TensorFlow.js installieren

Um TensorFlow.js zu installieren, führen Sie den folgenden Befehl in der Befehlszeile oder im Terminal aus:

npm install @tensorflow/tfjs

Schritt 5: Beginnen Sie mit dem Aufbau des Modells für maschinelles Lernen

Da Ihr Projekt nun eingerichtet und TensorFlow.js installiert ist, können Sie mit der Erstellung von Modellen für maschinelles Lernen im Browser beginnen. Sie können eine neue JavaScript-Datei erstellen, TensorFlow.js importieren und dessen API verwenden, um ein ML-Modell zu definieren, zu trainieren und Vorhersagen zu treffen.

Lassen Sie uns in einige Codebeispiele eintauchen, um zu lernen, wie Sie TensorFlow.js verwenden und Modelle für maschinelles Lernen in JavaScript erstellen.

Beispiel 1: Lineare Regression

Lineare Regression ist ein überwachter Lernalgorithmus, der zur Vorhersage kontinuierlicher Ausgabewerte basierend auf Eingabemerkmalen verwendet wird.

Sehen wir uns an, wie man eine lineare Regression mit TensorFlow.js implementiert.

// Import TensorFlow.js library
import * as tf from '@tensorflow/tfjs';

// Define input features and output values
const inputFeatures = tf.tensor2d([[1], [2], [3], [4], [5]], [5, 1]);
const outputValues = tf.tensor2d([[2], [4], [6], [8], [10]], [5, 1]);

// Define the model architecture
const model = tf.sequential();
model.add(tf.layers.dense({ units: 1, inputShape: [1] }));

// Compile the model
model.compile({ optimizer: 'sgd', loss: 'meanSquaredError' });

// Train the model
model.fit(inputFeatures, outputValues, { epochs: 100 }).then(() => {
   // Make predictions
   const predictions = model.predict(inputFeatures);

   // Print predictions
   predictions.print();
});

Anleitung

In diesem Beispiel importieren wir zunächst die TensorFlow.js-Bibliothek. Dann definieren wir die Eingabemerkmale und Ausgabewerte als Tensoren. Als nächstes erstellen wir ein sequentielles Modell und fügen eine dichte Schicht mit einer Einheit hinzu. Wir kompilieren das Modell mit dem Optimierer „sgd“ und der Verlustfunktion „meanSquaredError“. Schließlich trainieren wir das Modell für 100 Epochen und treffen Vorhersagen zu den Eingabemerkmalen. Die vorhergesagten Ausgabewerte werden auf der Konsole gedruckt.

Ausgabe

Tensor
   [2.2019906],
   [4.124609 ],
   [6.0472274],
   [7.9698458],
   [9.8924646]]

Beispiel 2: Stimmungsanalyse

Die Stimmungsanalyse ist eine beliebte Anwendung des maschinellen Lernens, bei der Textdaten analysiert werden, um die im Text ausgedrückte Emotion oder den emotionalen Ton zu bestimmen. Wir können TensorFlow.js verwenden, um ein Stimmungsanalysemodell zu erstellen, das vorhersagt, ob ein bestimmter Text eine positive oder negative Stimmung hat.

Beachten Sie den unten gezeigten Code.

// Import TensorFlow.js library
import * as tf from '@tensorflow/tfjs';
import '@tensorflow/tfjs-node'; // Required for Node.js environment

// Define training data
const trainingData = [
   { text: 'I love this product!', sentiment: 'positive' },
   { text: 'This is a terrible experience.', sentiment: 'negative' },
   { text: 'The movie was amazing!', sentiment: 'positive' },
   // Add more training data...
];

// Prepare training data
const texts = trainingData.map(item => item.text);
const labels = trainingData.map(item => (item.sentiment === 'positive' ? 1 : 0));

// Tokenize and preprocess the texts
const tokenizedTexts = texts.map(text => text.toLowerCase().split(' '));
const wordIndex = new Map();
let currentIndex = 1;
const sequences = tokenizedTexts.map(tokens => {
   return tokens.map(token => {
      if (!wordIndex.has(token)) {
         wordIndex.set(token, currentIndex);
         currentIndex++;
      }
      return wordIndex.get(token);
   });
});

// Pad sequences
const maxLength = sequences.reduce((max, seq) => Math.max(max, seq.length), 0);
const paddedSequences = sequences.map(seq => {
   if (seq.length < maxLength) {
      return seq.concat(new Array(maxLength - seq.length).fill(0));
   }
   return seq;
});

// Convert to tensors
const paddedSequencesTensor = tf.tensor2d(paddedSequences);
const labelsTensor = tf.tensor1d(labels);

// Define the model architecture
const model = tf.sequential();
model.add(tf.layers.embedding({ inputDim: currentIndex, outputDim: 16, inputLength: maxLength }));
model.add(tf.layers.flatten());
model.add(tf.layers.dense({ units: 1, activation: 'sigmoid' }));

// Compile the model
model.compile({ optimizer: 'adam', loss: 'binaryCrossentropy', metrics: ['accuracy'] });

// Train the model
model.fit(paddedSequencesTensor, labelsTensor, { epochs: 10 }).then(() => {
   // Make predictions
   const testText = 'This product exceeded my expectations!';
   const testTokens = testText.toLowerCase().split(' ');
   const testSequence = testTokens.map(token => {
      if (wordIndex.has(token)) {
         return wordIndex.get(token);
      }
      return 0;
   });
   const paddedTestSequence = testSequence.length < maxLength ? testSequence.concat(new Array(maxLength - testSequence.length).fill(0)) : testSequence;
   const testSequenceTensor = tf.tensor2d([paddedTestSequence]);
   const prediction = model.predict(testSequenceTensor);
   const sentiment = prediction.dataSync()[0] > 0.5 ?  'positive' : 'negative';

   // Print the sentiment prediction
   console.log(`The sentiment of "${testText}" is ${sentiment}.`);
});

Ausgabe

Epoch 1 / 10
eta=0.0 ========================================================================> 
14ms 4675us/step - acc=0.00 loss=0.708 
Epoch 2 / 10
eta=0.0 ========================================================================> 
4ms 1428us/step - acc=0.667 loss=0.703 
Epoch 3 / 10
eta=0.0 ========================================================================> 
5ms 1733us/step - acc=0.667 loss=0.697 
Epoch 4 / 10
eta=0.0 ========================================================================> 
4ms 1419us/step - acc=0.667 loss=0.692 
Epoch 5 / 10
eta=0.0 ========================================================================> 
6ms 1944us/step - acc=0.667 loss=0.686 
Epoch 6 / 10
eta=0.0 ========================================================================> 
5ms 1558us/step - acc=0.667 loss=0.681 
Epoch 7 / 10
eta=0.0 ========================================================================> 
5ms 1513us/step - acc=0.667 loss=0.675 
Epoch 8 / 10
eta=0.0 ========================================================================> 
3ms 1057us/step - acc=1.00 loss=0.670 
Epoch 9 / 10
eta=0.0 ========================================================================> 
5ms 1745us/step - acc=1.00 loss=0.665 
Epoch 10 / 10
eta=0.0 ========================================================================> 
4ms 1439us/step - acc=1.00 loss=0.659 
The sentiment of "This product exceeded my expectations!" is positive.

Das obige ist der detaillierte Inhalt vonJavaScript Machine Learning: Erstellen Sie ML-Modelle im Browser. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen