📜  TensorFlow.js Util 完整参考(1)

📅  最后修改于: 2023-12-03 15:35:18.141000             🧑  作者: Mango

TensorFlow.js Util 完整参考

TensorFlow.js Util 是一个非常实用的 JavaScript 库,它可以帮助你使用 TensorFlow.js 更加高效、方便地在浏览器环境和 Node.js 环境下进行机器学习任务。本文将全面介绍 TensorFlow.js Util 的使用方法和功能,让你可以快速上手并运用该工具库进行机器学习开发。

安装

你可以在 npm 上安装 TensorFlow.js Util:

npm install @tensorflow/tfjs-util

也可以使用 CDN 引用:

<html>
  <head>
    <script
      src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-util@3.10.0/dist/tfjs-util.min.js"
      integrity="sha384-JRiJ5E5RMbVt8x/wpW2E16TDaYiYI1A7XuNEfLZV7r1rDxjvIhalBxWnedPOyNd4"
      crossorigin="anonymous"
    ></script>
  </head>
  <body>
    ...
  </body>
</html>
使用
数据预处理

在进行机器学习任务时,我们常常需要对原始数据进行预处理以达到更好的效果。TensorFlow.js Util 提供了很多预处理工具,下面我们会介绍其中一些。

1. oneHot

oneHot 方法将数值转换成 one-hot 向量,具体使用方式如下:

import { oneHot } from "@tensorflow/tfjs-util";

const labels = [0, 1, 2, 3];
const numClasses = 4;
const oneHotLabels = oneHot(labels, numClasses);
console.log(oneHotLabels);
// 输出结果:
// [[1, 0, 0, 0],
//  [0, 1, 0, 0],
//  [0, 0, 1, 0],
//  [0, 0, 0, 1]]

其中,labels 是待转换的数值数组,numClasses 是 one-hot 向量的长度。

2. normalize

normalize 方法将数据规范化到 [0,1] 或 [-1,1] 的区间内,具体使用方式如下:

import { normalize } from "@tensorflow/tfjs-util";

const data = [1, 2, 3, 4, 5];
const normalizedData = normalize(data, -1, 1);
console.log(normalizedData);
// 输出结果:[-1, -0.5, 0, 0.5, 1]

const imageData = [[100, 200, 50], [150, 100, 200]];
const normalizedImageData = normalize(imageData);
console.log(normalizedImageData);
// 输出结果:[[0.39215686274509803, 0.7843137254901961, 0.19607843137254902], [0.5882352941176471, 0.39215686274509803, 0.7843137254901961]]

其中,data 是待规范化的一维数组或多维数组,minmax 分别是规范化的上下限。如果只传入一个参数,则默认将数据规范化到 [0,1] 区间内。

3. shuffle

shuffle 方法将数组随机打乱,具体使用方式如下:

import { shuffle } from "@tensorflow/tfjs-util";

const data = [1, 2, 3, 4, 5];
const shuffledData = shuffle(data);
console.log(shuffledData);
// 输出结果:[4, 1, 5, 2, 3]

const dataset = [
  { x: [1, 2], y: [1] },
  { x: [2, 3], y: [2] },
  { x: [3, 4], y: [3] },
  { x: [4, 5], y: [4] },
  { x: [5, 6], y: [5] },
];
const shuffledDataset = shuffle(dataset);
console.log(shuffledDataset);
// 输出结果:
// [
//   { x: [4, 5], y: [4] },
//   { x: [2, 3], y: [2] },
//   { x: [5, 6], y: [5] },
//   { x: [3, 4], y: [3] },
//   { x: [1, 2], y: [1] }
// ]

其中,data 是待打乱的一维数组或多维数组,dataset 是待打乱的数据集。

其他工具

1. where

where 方法返回数组中符合条件的元素的下标,具体使用方式如下:

import { where } from "@tensorflow/tfjs-util";

const array = [1, 2, 3, 4, 3, 2, 1];
const indices = where((value) => value === 3, array);
console.log(indices);
// 输出结果:[2, 4]

const tensor = tf.tensor2d([[1, 2], [3, 4]]);
const nonzeroPositions = where((value) => value !== 0, tensor);
console.log(nonzeroPositions);
// 输出结果:[{ x: 0, y: 0 }, { x: 0, y: 1 }, { x: 1, y: 0 }, { x: 1, y: 1 }]

其中,array 是待查找的一维数组或多维数组,tensor 是待查找的 Tensor。

2. toTensor

toTensor 方法将数据转换成 Tensor,具体使用方式如下:

import { toTensor } from "@tensorflow/tfjs-util";

const data1 = [1, 2, 3, 4, 5];
const tensor1 = toTensor(data1);
console.log(tensor1);
// 输出结果:Tensor1D [1, 2, 3, 4, 5]

const data2 = [
  [1, 2],
  [3, 4],
];
const tensor2 = toTensor(data2);
console.log(tensor2);
// 输出结果:Tensor2D [[1, 2], [3, 4]]

其中,data1data2 是待转换的一维数组或多维数组。

总结

TensorFlow.js Util 是一个非常实用的 JavaScript 库,它提供了很多方便的预处理工具和数据转换工具,能够极大地简化机器学习任务的开发。通过本文的介绍,相信你已经对 TensorFlow.js Util 的使用有了更深入的认识。