如果你还不够了解 TensorFlow.js,可以右转:here。下面是关于一些关于 TensorFlow.js 核心概念。
由于现在 TensorFlow.js 的资料仅限于官方,也没什么中文资料,这篇由LiNPX整理、收集与翻译
张量(tensor)是一个可用来表示在一些矢量、纯量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 n 维空间内,有 n^r个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。r称为该张量的秩或阶(与矩阵的秩和阶均无关系)。
TensorFlow.js 的数据单元是张量:一组数值存储于一维或者多维数组里。一个张量的实例有 shape 的属性用于构造多维数组。其中最主要的 Tensor 的构造函数是 tf.tensor
。
// 2x3 Tensor
const shape = [2, 3]; // 2 rows, 3 columns const a = tf.tensor([1.0, 2.0, 3.0, 10.0, 20.0, 30.0], shape); a.print(); // print Tensor values // Output: [[1 , 2 , 3 ], // [10, 20, 30]] // The shape can also be inferred: const b = tf.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]]); b.print(); // Output: [[1 , 2 , 3 ], // [10, 20, 30]]
但有时候,为了方便构造更简单的 Tensors,建议使用 tf.scalar
, tf.tensor1d
, tf.tensor2d
, tf.tensor3d
和 tf.tensor4d
,这样也会更强代码的可读性。下面的例子使用了tf.tensor2d
:
const c = tf.tensor2d([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]]); c.print(); // Output: [[1 , 2 , 3 ], // [10, 20, 30]]
TensorFlow.js 也提供了用于构建值全部为 0 的 tensors 的tf.zeros
函数和构建值为 1 的tf.ones
的函数
// 3x5 Tensor with all values set to 0
const zeros = tf.zeros([3, 5]);
// Output: [[0, 0, 0, 0, 0], // [0, 0, 0, 0, 0], // [0, 0, 0, 0, 0]]
在 TensorFlow.js 中,tensors 一旦被构造就具备不可变性,你不能再修改它们的值,只能重新创建。