當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Tensorflow.js tf.Functional用法及代碼示例


TensorFlow.js 是一個 JavaScript 庫,用於在 Web 應用程序和 Node.js 中訓練和部署機器學習模型。您可以使用 tensorflow.js 從頭開始開發機器學習模型,也可以使用提供的 API 在瀏覽器或 Node.js 服務器上訓練現有模型。

安裝TenserFlow.js:我們可以通過以下兩種方法安裝和使用TenserFlow.js。

方法一:我們可以使用CDN鏈接來運行Tensorflow.js代碼,而無需安裝它。將以下 CDN 鏈接添加到 HTML 文件 head 部分的 script 標記中。

<script src=”https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js”></script>

方法2:我們可以使用npm安裝。在通過 npm 安裝 TensorFlow.js 之前,首先確保您已經安裝了 Node.js 和 npm。

npm install @tensorflow/tfjs

Tensorflow.js tf.Functional 類:TensorFlow.js 中的 tf.Function 類是一種包裝構造 TensorFlow 計算的函數的方法,使序列化和執行計算變得更容易。 TensorFlow 計算是一係列獲取輸入 Tensor 對象並生成輸出 Tensor 對象的操作。例如,您可能想要定義一個計算,將兩個數字相加,將結果乘以第三個數字,然後應用 ReLU 激活函數。通常,您可以通過創建 TensorFlow 操作並在 TensorFlow 會話中執行它們來定義此類計算。但是,這可能很麻煩,特別是如果您想要序列化計算並在不同的環境中執行它。 tf.Function 類提供了一種將計算包裝在函數中的方法,使其更容易序列化和執行。要創建 tf.Function,您需要定義一個函數,該函數接受輸入 Tensor 對象並返回輸出 Tensor 對象。然後將此函數傳遞給 tf.Function 構造函數。

示例 1:TensorFlow.js 庫定義一個簡單函數 addAndRelu,它將兩個張量作為輸入,將它們加在一起,然後應用 ReLU 激活函數。然後將該函數包裝在 TensorFlow.js tf.function 中以獲得更好的性能。然後使用值 1 和 2 創建兩個張量,並將其作為輸入傳遞給函數 addAndRelu,並將生成的張量存儲在變量 c 中。然後在 c 上調用 dataSync 方法以檢索 JavaScript 數字形式的值,並將其記錄在控製台中。

Javascript


import * as tf from '@tensorflow/tfjs'; 
  
// Define a simple function that adds two numbers and 
//applies the ReLU activation function. 
function addAndRelu(a, b) { 
    const c = a.add(b); 
    return c.relu(); 
} 
  
// Wrap the function in a tf.Function. 
const func = tf.function(addAndRelu); 
  
// Define the input tensors. 
const a = tf.tensor(1); 
const b = tf.tensor(2); 
  
// Execute the function and get the result. 
const c = func(a, b); 
  
// Print the result. 
console.log(c.dataSync());

輸出:

[3]

示例 2:TensorFlow.js 庫定義一個函數 sumOfSquares,該函數接受數字數組作為輸入並返回數字的平方和。該函數使用 for 循環迭代數組的元素,並將每個元素的平方添加到變量 sum 中。然後將該函數包裝在 TensorFlow.js tf.function 中以獲得更好的性能。然後使用數字數組 [1, 2, 3] 創建一個張量,並將其作為輸入傳遞給函數 sumOfSquares,並將得到的張量存儲在變量 y 中。然後在 y 上調用 dataSync 方法以檢索 JavaScript 數字形式的值並將其記錄在控製台中。

Javascript


import * as tf from '@tensorflow/tfjs'; 
  
// Define a function that takes an array of numbers and  
//returns the sum of the squares of the numbers. 
function sumOfSquares(x) { 
    let sum = 0; 
    for (let i = 0; i < x.length; i++) { 
        sum += x[i] * x[i]; 
    } 
    return sum; 
} 
  
// Wrap the function in a tf.Function. 
const func = tf.function(sumOfSquares); 
  
// Define the input tensor. 
const x = tf.tensor([1, 2, 3]); 
  
// Execute the function and get the result. 
const y = func(x); 
  
// Print the result. 
console.log(y.dataSync());

輸出:

[14]

示例 3:用於定義函數的TensorFlow.js 庫行總和它接受 2D 張量作為輸入並返回張量每行的總和。該函數使用張量的求和方法,其中 axis=1 參數意味著按行求和。然後該函數被包裝在TensorFlow.js中tf.function為了更好的性能。

然後使用二維數組 [[1, 2, 3], [4, 5, 6]] 創建一個張量,並將其作為輸入傳遞給函數 rowSums,並將得到的張量存儲在變量 y 中。然後在 y 上調用 dataSync 方法以檢索 JavaScript 數組形式的值,並將其記錄在控製台中。因此它將輸出具有兩個元素 [6,15] 的數組,它們是原始張量中的行之和。

Javascript


import * as tf from '@tensorflow/tfjs'; 
  
// Define a function that takes a 2D Tensor  
//and returns the sum of the rows. 
function rowSums(x) { 
    return x.sum(axis = 1); 
} 
  
// Wrap the function in a tf.Function. 
const func = tf.function(rowSums); 
  
// Define the input tensor. 
const x = tf.tensor([[1, 2, 3], [4, 5, 6]]); 
  
// Execute the function and get the result. 
const y = func(x); 
  
// Print the result. 
console.log(y.dataSync());

輸出:

[6, 15]

參考:https://js.tensorflow.org/api/latest/



相關用法


注:本文由純淨天空篩選整理自anurag_07大神的英文原創作品 Tensorflow.js tf.Functional Class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。