# 简介

# 什么是 TensorFlow

TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个 CPU(或 GPU),服务器,移动设备等等。TensorFlow 最初由 Google 大脑小组(隶属于 Google 机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

# 什么是 TensorFlow.js

  • 一个用 javascript 实现的机器学习库

# TensorFlow.js 具体功能

  • 可以直接在浏览器和 node.js 中使用机器学习技术

  • 能够运行现有模型

  • 能够重新训练现有模型

  • 使用 javascript 开发机器学习模型

# 什么是 tensor

  • 中文名叫张量

  • 张量是向量和矩阵向更高维度的推广

  • 相当于多维数组(对于前端工程师就相当于嵌套数组),但会比多维数组多一些别的属性比如形状、大小之类的

# 为何要使用 tensor Tensor和机器学习有什么关系

  • 神经网络的每一层要存储 N 纬数据

  • N 层的 for 循环

  • Tensor 作为高纬数据结构完美解决以上计算问题

以下是用传统js和tensor计算输入输出的区别

// 传统for循环
const input = [1, 2, 3, 4];
const w = [
  [1, 2, 3, 4],
  [2, 3, 4, 5],
  [3, 4, 5, 6],
  [4, 5, 6, 7],
];
const output = [0, 0, 0, 0];

for (let i = 0, len = w.length; i < len; i++) {
  for (let j = 0, len_j = input.length; j < len_j; j++) {
    output[i] += input[j] * w[i][j];
  }
}
console.log(output);

// tensor--权重点乘输入
tf.tensor(w)
  .dot(tf.tensor(input))
  .print();

tensor相当于是封装了AI算法中需要用到的各类数学算法,方便调用,而且底层GPU加速也使得性能比原生js高得多,这对于大数据的计算是至关重要的。