Heim >Web-Frontend >js-Tutorial >JavaScript Machine Learning: Erstellen Sie ML-Modelle im Browser
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.
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.
Um mit dem maschinellen Lernen von JavaScript zu beginnen, befolgen Sie diese Schritte -
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.
Ö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.
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.
Um TensorFlow.js zu installieren, führen Sie den folgenden Befehl in der Befehlszeile oder im Terminal aus:
npm install @tensorflow/tfjs
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.
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(); });
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.
Tensor [2.2019906], [4.124609 ], [6.0472274], [7.9698458], [9.8924646]]
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}.`); });
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!