当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。