Node.js 設定

對於 Node.js 環境,您可以使用 npm 安裝它:

npm install @tensorflow/tfjs

2. 建構簡單的神經網路模型

讓我們建立一個簡單的神經網路來預測基本線性函數 y = 2x - 1 的輸出。我們將使用 TensorFlow.js 來建立和訓練該模型。

第 1 步:定義模型

我們先定義一個具有一個密集層的順序模型(線性堆疊):

// Import TensorFlow.jsimport * as tf from \\'@tensorflow/tfjs\\';// Create a simple sequential modelconst model = tf.sequential();// Add a single dense layer with 1 unit (neuron)model.add(tf.layers.dense({units: 1, inputShape: [1]}));

在這裡,我們創建了一個具有一個密集層的模型。此層有一個神經元(單位:1),並且需要一個輸入特徵(inputShape:[1])。

第 2 步:編譯模型

接下來,我們透過指定最佳化器和損失函數來編譯模型:

// Compile the modelmodel.compile({  optimizer: \\'sgd\\',  // Stochastic Gradient Descent  loss: \\'meanSquaredError\\'  // Loss function for regression});

我們使用隨機梯度下降(SGD)優化器,這對於小模型是有效的。損失函數meanSquaredError適用於像這樣的迴歸任務。

第 3 步:準備訓練數據

我們現在將為函數 y = 2x - 1 建立一些訓練資料。在 TensorFlow.js 中,資料儲存在張量(多維數組)中。以下是我們產生一些訓練資料的方法:

// Generate some synthetic data for trainingconst xs = tf.tensor2d([0, 1, 2, 3, 4], [5, 1]);  // Inputs (x values)const ys = tf.tensor2d([1, 3, 5, 7, 9], [5, 1]);  // Outputs (y values)

在本例中,我們建立了一個輸入值 (0, 1, 2, 3, 4) 的張量 xs 和一個對應的輸出張量 ys,其值使用 y = 2x - 1 計算。

第 4 步:訓練模型

現在,我們可以根據我們的資料訓練模型:

// Train the modelmodel.fit(xs, ys, {epochs: 500}).then(() => {  // Once training is complete, use the model to make predictions  model.predict(tf.tensor2d([5], [1, 1])).print();  // Output will be close to 2*5 - 1 = 9});

在這裡,我們對模型進行 500 輪訓練(訓練資料的迭代)。訓練後,我們使用模型來預測輸入值為 5 的輸出,該輸出應傳回接近 9 的值 (y = 2*5 - 1 = 9)。

3. 在瀏覽器中運行模型

要在瀏覽器中執行此模型,您需要一個包含 TensorFlow.js 程式庫和 JavaScript 程式碼的 HTML 檔案:

            TensorFlow.js Example              

Simple Neural Network with TensorFlow.js

並且在您的 app.js 檔案中,您可以包含上面的模型建置和訓練程式碼。

","image":"http://www.luping.net/uploads/20241022/17295980466717925ed5c04.jpg","datePublished":"2024-11-05T22:45:47+08:00","dateModified":"2024-11-05T22:45:47+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JavaScript 機器學習入門:TensorFlow.js 初學者指南

JavaScript 機器學習入門:TensorFlow.js 初學者指南

發佈於2024-11-05
瀏覽:881

Getting Started with Machine Learning in JavaScript: A Beginner’s Guide with TensorFlow.js

機器學習 (ML) 迅速改變了軟體開發世界。直到最近,由於 TensorFlow 和 PyTorch 等函式庫,Python 仍是 ML 領域的主導語言。但隨著 TensorFlow.js 的興起,JavaScript 開發人員現在可以深入令人興奮的機器學習世界,使用熟悉的語法直接在瀏覽器或 Node.js 上建立和訓練模型。

在這篇文章中,我們將探討如何開始使用 JavaScript 進行機器學習。我們將演練使用 TensorFlow.js.

建立和訓練簡單模型的範例

為什麼選擇 TensorFlow.js?

TensorFlow.js 是一個開源函式庫,可讓您完全用 JavaScript 定義、訓練和執行機器學習模型。它既可以在瀏覽器中運行,也可以在 Node.js 上運行,這使得它對於各種 ML 應用程式具有難以置信的多功能性。

以下是 TensorFlow.js 令人興奮的幾個原因:

  1. 即時訓練:您可以直接在瀏覽器中運行模型,提供即時互動。
  2. 跨平台:相同的程式碼可以在伺服器和用戶端環境上運作。
  3. 硬體加速:它使用WebGL進行GPU加速,從而加快運算速度。

讓我們看看如何開始!

1. 設定 TensorFlow.js

在深入研究程式碼之前,您需要安裝TensorFlow.js。您可以透過

瀏覽器設定

要在瀏覽器中使用 TensorFlow.js,只要在 HTML 檔案中包含以下

Node.js 設定

對於 Node.js 環境,您可以使用 npm 安裝它:

npm install @tensorflow/tfjs

2. 建構簡單的神經網路模型

讓我們建立一個簡單的神經網路來預測基本線性函數 y = 2x - 1 的輸出。我們將使用 TensorFlow.js 來建立和訓練該模型。

第 1 步:定義模型

我們先定義一個具有一個密集層的順序模型(線性堆疊):

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

// Create a simple sequential model
const model = tf.sequential();

// Add a single dense layer with 1 unit (neuron)
model.add(tf.layers.dense({units: 1, inputShape: [1]}));

在這裡,我們創建了一個具有一個密集層的模型。此層有一個神經元(單位:1),並且需要一個輸入特徵(inputShape:[1])。

第 2 步:編譯模型

接下來,我們透過指定最佳化器和損失函數來編譯模型:

// Compile the model
model.compile({
  optimizer: 'sgd',  // Stochastic Gradient Descent
  loss: 'meanSquaredError'  // Loss function for regression
});

我們使用隨機梯度下降(SGD)優化器,這對於小模型是有效的。損失函數meanSquaredError適用於像這樣的迴歸任務。

第 3 步:準備訓練數據

我們現在將為函數 y = 2x - 1 建立一些訓練資料。在 TensorFlow.js 中,資料儲存在張量(多維數組)中。以下是我們產生一些訓練資料的方法:

// Generate some synthetic data for training
const xs = tf.tensor2d([0, 1, 2, 3, 4], [5, 1]);  // Inputs (x values)
const ys = tf.tensor2d([1, 3, 5, 7, 9], [5, 1]);  // Outputs (y values)

在本例中,我們建立了一個輸入值 (0, 1, 2, 3, 4) 的張量 xs 和一個對應的輸出張量 ys,其值使用 y = 2x - 1 計算。

第 4 步:訓練模型

現在,我們可以根據我們的資料訓練模型:

// Train the model
model.fit(xs, ys, {epochs: 500}).then(() => {
  // Once training is complete, use the model to make predictions
  model.predict(tf.tensor2d([5], [1, 1])).print();  // Output will be close to 2*5 - 1 = 9
});

在這裡,我們對模型進行 500 輪訓練(訓練資料的迭代)。訓練後,我們使用模型來預測輸入值為 5 的輸出,該輸出應傳回接近 9 的值 (y = 2*5 - 1 = 9)。

3. 在瀏覽器中運行模型

要在瀏覽器中執行此模型,您需要一個包含 TensorFlow.js 程式庫和 JavaScript 程式碼的 HTML 檔案:



    TensorFlow.js Example

Simple Neural Network with TensorFlow.js

並且在您的 app.js 檔案中,您可以包含上面的模型建置和訓練程式碼。

版本聲明 本文轉載於:https://dev.to/pawandeore/getting-started-with-machine-learning-in-javascript-a-beginners-guide-with-tensorflowjs-2ol2?1如有侵犯,請聯絡study_golang@163 .com刪除
最新教學 更多>
  • 優化 AWS ECS 的 Java 堆設置
    優化 AWS ECS 的 Java 堆設置
    我們在 AWS Elastic Container Service(ECS) Fargate 上執行多個 Java 服務 (Corretto JDK21)。每個服務都有自己的容器,我們希望使用為每個進程支付的所有可能的資源。但這些步驟可以應用於 EC2 和其他雲端。 服務正在運行批次作業,延遲並不...
    程式設計 發佈於2024-11-06
  • PHP 初學者必備知識:釋放網站的全部潛力
    PHP 初學者必備知識:釋放網站的全部潛力
    PHP基礎:釋放網站潛能PHP是強大的伺服器端腳本語言,廣泛用於建立動態網站。對於初學者來說,掌握PHP基礎知識至關重要。本文將提供一個全面的指南,涵蓋PHP編程的基本要素,並透過實戰案例鞏固理解。 安裝並設定PHP要開始使用PHP,您需要安裝PHP解釋器和相關的軟體。遵循以下步驟:- 下载并安装P...
    程式設計 發佈於2024-11-06
  • 如何確定 PHP 標頭的正確圖片內容類型?
    如何確定 PHP 標頭的正確圖片內容類型?
    確定PHP 標頭的圖像內容類型確定PHP 標頭的圖像內容類型使用Header() 函數從Web 根目錄之外顯示圖像時,用戶可能會遇到困惑關於指定的內容類型:image/png。然而,儘管內容類型固定,但具有各種擴展名的圖像(例如, JPG、GIF)仍然可以成功顯示。 $filename = base...
    程式設計 發佈於2024-11-05
  • ByteBuddies:使用 Python 和 Tkinter 建立互動式動畫寵物
    ByteBuddies:使用 Python 和 Tkinter 建立互動式動畫寵物
    大家好! 我很高興向大家介紹 ByteBuddies,這是一個用 Python 和 Tkinter 創建的個人項目,展示了互動式動畫虛擬寵物。 ByteBuddies 將引人入勝的動畫與使用者交互相結合,提供了展示 GUI 程式設計強大功能的獨特體驗。該項目旨在透過提供互動式虛擬寵物來讓您的螢幕充...
    程式設計 發佈於2024-11-05
  • 如何解決“TypeError:\'str\'物件不支援專案分配”錯誤?
    如何解決“TypeError:\'str\'物件不支援專案分配”錯誤?
    'str'物件項目分配錯誤疑難排解'str'物件項目分配錯誤疑難排解嘗試在Python 中修改字串中的特定字元時,您可能會遇到錯誤「類型錯誤:「str」物件不支援專案分配。」發生這種情況是因為Python 中的字串是不可變的,這意味著它們無法就地更改。 >>...
    程式設計 發佈於2024-11-05
  • 如何緩解 GenAI 程式碼和 LLM 整合中的安全問題
    如何緩解 GenAI 程式碼和 LLM 整合中的安全問題
    GitHub Copilot and other AI coding tools have transformed how we write code and promise a leap in developer productivity. But they also introduce new ...
    程式設計 發佈於2024-11-05
  • Spring 中的 ContextLoaderListener:必要的邪惡還是不必要的複雜?
    Spring 中的 ContextLoaderListener:必要的邪惡還是不必要的複雜?
    ContextLoaderListener:必要的邪惡還是不必要的複雜? 開發人員經常遇到在 Spring Web 應用程式中使用 ContextLoaderListener 和 DispatcherServlet。然而,一個令人煩惱的問題出現了:為什麼不簡單地使用 DispatcherServle...
    程式設計 發佈於2024-11-05
  • JavaScript 機器學習入門:TensorFlow.js 初學者指南
    JavaScript 機器學習入門:TensorFlow.js 初學者指南
    機器學習 (ML) 迅速改變了軟體開發世界。直到最近,由於 TensorFlow 和 PyTorch 等函式庫,Python 仍是 ML 領域的主導語言。但隨著 TensorFlow.js 的興起,JavaScript 開發人員現在可以深入令人興奮的機器學習世界,使用熟悉的語法直接在瀏覽器或 Nod...
    程式設計 發佈於2024-11-05
  • extjs API 查詢參數範例
    extjs API 查詢參數範例
    API 查詢 參數是附加到 API 請求 URL 的鍵值對,用於傳送附加資訊至伺服器。它們允許用戶端(例如 Web 瀏覽器或應用程式)在向伺服器發出請求時指定某些條件或傳遞資料。 查詢參數加入到 URL 末端問號 (?) 後。每個參數都是鍵值對,鍵和值之間以等號 (=) 分隔。如果有多個查詢參數,...
    程式設計 發佈於2024-11-05
  • 如何解決Go中從不同套件匯入Proto檔案時出現「Missing Method Protoreflect」錯誤?
    如何解決Go中從不同套件匯入Proto檔案時出現「Missing Method Protoreflect」錯誤?
    如何從不同的套件導入Proto 檔案而不遇到「Missing Method Protoreflect」錯誤在Go 中,protobuf 常用於資料序列化。將 protobuf 組織到不同的套件中時,可能會遇到與缺少 ProtoReflect 方法相關的錯誤。當嘗試將資料解組到單獨套件中定義的自訂 p...
    程式設計 發佈於2024-11-05
  • 為什麼MySQL在查詢「Field = 0」非數位資料時傳回所有行?
    為什麼MySQL在查詢「Field = 0」非數位資料時傳回所有行?
    不明確的查詢:理解為什麼MySQL 回傳「Field=0」的所有行在MySQL 查詢領域,一個看似無害的比較,例如“SELECT * FROM table WHERE email=0”,可能會產生意外的結果。它沒有按預期過濾特定行,而是返回表中的所有記錄,從而引發了對資料安全性和查詢完整性的擔憂。 ...
    程式設計 發佈於2024-11-05
  • 伺服器發送事件 (SSE) 的工作原理
    伺服器發送事件 (SSE) 的工作原理
    SSE(服务器发送事件)在 Web 开发领域并未广泛使用,本文将深入探讨 SSE 是什么、它是如何工作的以及它如何受益您的申请。 什么是上交所? SSE 是一种通过 HTTP 连接从服务器向客户端发送实时更新的简单而有效的方法。它是 HTML5 规范的一部分,并受到所有现代 Web ...
    程式設計 發佈於2024-11-05
  • 如何從字串 TraceID 建立 OpenTelemetry Span?
    如何從字串 TraceID 建立 OpenTelemetry Span?
    從字串 TraceID 建構 OpenTelemetry Span要建立 Span 之間的父子關係,必須在上下文傳播不可行的情況下使用標頭。在這種情況下,追蹤 ID 和跨度 ID 包含在訊息代理程式的標頭中,這允許訂閱者使用父追蹤 ID 建立新的跨度。 解決方案以下步驟可以使用追蹤ID 在訂閱者端建...
    程式設計 發佈於2024-11-05
  • 如何在gRPC中實現伺服器到客戶端的廣播?
    如何在gRPC中實現伺服器到客戶端的廣播?
    gRPC 中的廣播:伺服器到客戶端通訊建立gRPC 連線時,通常需要將事件或更新從伺服器廣播到客戶端連接的客戶端。為了實現這一點,可以採用各種方法。 Stream Observables常見的方法是利用伺服器端流。每個連線的客戶端都與伺服器建立自己的流。然而,直接訂閱其他伺服器客戶端流是不可行的。 ...
    程式設計 發佈於2024-11-05
  • 為什麼填入在 Safari 和 IE 選擇清單中不起作用?
    為什麼填入在 Safari 和 IE 選擇清單中不起作用?
    在Safari 和IE 的選擇清單中不顯示填充儘管W3 規範中沒有限制,但WebKit 瀏覽器不支援選擇框中的填充,包括Safari和Chrome。因此,這些瀏覽器中不應用填充。 要解決此問題,請考慮使用 text-indent 而不是 padding-left。透過相應增加選擇框的寬度來保持相同的...
    程式設計 發佈於2024-11-05

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3