Tensoflw.js - 01 - 安装与入门(中文注释)

参考 W3Cschool 文档:https://www.w3cschool.cn/tensorflowjs/

本文主要翻译一些英文注释,添加通俗的注释,记录新手使用遇到的小问题,去除不必要的部分,帮助新手快速入门

Tensoflw.js 介绍:

TensorFlow.js 是一个开源的基于硬件加速的 JavaScript 库,用于训练和部署机器学习模型。TensorFlow.js 可以为你提供高性能的、易于使用的机器学习构建模块,允许你在浏览器上训练模型,或以推断模式运行预训练的模型。TensorFlow.js 不仅可以提供低级的机器学习构建模块,还可以提供高级的类似 Keras 的 API 来构建神经网络

Tensorflow.js 安装

在 JavaScript 项目中,TensorFlow.js 的安装方法有两种:

  • 一种是通过 script 标签在线引入(方便,但依赖网络,学习建议使用)
  • 另外一种就是通过 npm 进行安装,本地使用 (开发建议使用)
  • 后面我会贴上我目前的最新版 tf.js 0.13.2 下载地址:

一、使用Script 标签在线引入:

1.新建 html 文件:

<html>
<head>
<!-- 加载 TensorFlow.js,发行版本可以直接修改版本号加载需要的版本 -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.2"> </script> <!-- 将代码放在下面的脚本标记中 -->
<script>
// 提示:1.没有“import”声明。“if”在索引页上可用,因为上述的脚本标签在线引用
// 2.输出的值都是打印在浏览器开发者工具的控制台,而不是页面上
// 此处粘贴自己的内容
</script>
</head> <body>
</body>
</html>

2.将下面的代码添加到HTML文件中,在浏览器中打开该HTML文件,代码应该运行!

二、通过 NPM 下载到本地

使用 npm 将 TensorFlow.js 添加到您的项目中。

注意:因为使用 ES2017 语法(如import),所以此工作流程假定您使用打包程序/转换程序将代码转换为浏览器可以理解的内容。

1.进入项目的 js 目录

2.(如果还有在该目录使用过 npm,请先执行> npm init)再使用下面命令

npm install @tensorflow/tfjs

3.安装后容易出现目录问题,请先检查

4.在js文件中输入以下代码:

import * as tf from '@tensorflow/tfjs';

//下面是官方给出的一个示例,就类似于 hellowolrd 示例,一般用不到直接删掉
//
// // 定义一个线性回归模型。
// const model = tf.sequential();
// model.add(tf.layers.dense({units: 1, inputShape: [1]}));
//
// // 准备培训模型:指定损失和优化器。
// model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
//
// // 为训练提供一些合成数据。
// const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
// const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);
//
// // 利用数据对模型进行训练。
// model.fit(xs, ys).then(() => {
// // Use the model to do inference on a data point the model hasn't seen before:
// model.predict(tf.tensor2d([5], [1, 1])).print();
// });

上面 js 代码暂时看不懂没关系,了解他们是给我们搭建 机器学习的环境,使您能够在浏览器中训练神经网络或在推理模式下运行预先训练的模型

npm 安装的 Tensorflow.js 0.13 链接: https://pan.baidu.com/s/1w-Y9Xmlh-cZJLHp6ElAzug 密码:hvmk

Tensorflow.js 张量和变量

张量(Tensor):

1.张量(Tensor)和变量(Variable)是 TensorFlow.js 中数据的主要表现形式。

两者不同之处在于张量是不可变的,而变量是可变的。

2.究竟什么是张量(Tensor)?

定义: 一组数值形成一个或多个维度的数组。 张量实例具有定义数组形状的形状属性。张量是 TensorFlow.js 中数据的中心单位,也是 Tensorflow.js 中数据的主要表现形式

(可以简单的理解为 n 为数组,是数据的中心单位)

3.shape 属性:(张量是 n 维数组,shape 就是说明张量具体是几维几行几列的数组)

4.一个 Tensor 实例有一个shape 属性来定义这一组数值如何组成张量,而最主要的 Tensor 实例的构造函数就是 tf.tensor 函数,如下所示:

<script>
//直接将代码拷贝到有引入 Tensorflow.js 的 html 中即可
//提示:输出的值都是打印在浏览器开发者工具的控制台,而不是页面上
// 2x3 Tensor
const shape = [2, 3]; // 2 行, 3 列
const a = tf.tensor([1.0, 2.0, 3.0, 10.0, 20.0, 30.0], shape);
a.print(); // 打印张量值
//提示:输出显示在浏览器控制台,F12 > console
//输出: [[1 , 2 , 3 ],
// [10, 20, 30]] // shape也可以用下面的方式实现:
const b = tf.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]]);
b.print();
// 输出: [[1 , 2 , 3 ],
// [10, 20, 30]] </script>

推荐使用下面的函数来增强代码的可读性:

tf.scalar(零维), tf.tensor1d(一维), tf.tensor2d(二维), tf.tensor3d(三维)、tf.tensor4d(四维)以及 tf.ones(值全是1)或者tf.zeros(值全是0)

如下所示:

<script>
//直接将代码拷贝到有引入 Tensorflow.js 的 html 中即可
//提示:输出的值都是打印在浏览器开发者工具的控制台,而不是页面上
const a = tf.scalar(3.14);
a.print(); // 输出零维张量 const b = tf.tensor2d([[2, 3, 4], [5, 6, 7]]);
b.print(); // 输出二维张量 const c = tf.zeros([2, 3]);
c.print(); // 输出2行3列的值全是0的张量 const d = tf.ones([3, 5]);
d.print(); // 输出3行5列的值全是1的张量 </script>

在 TensorFlow.js 中,张量是不变的; 一旦创建你就不能改变它们的值。 但是,您可以对它们执行操作来生成新的张量。

变量(Variable):

1.Variables 变量是通过张量进行初始化得到的。不像 Tensor 的值不可变,变量的值是可变的。你可以使用变量的 assign 方法分配一个新的 tensor 到这个变量上,这是变量就会改变:

<script>
//直接将代码拷贝到有引入 Tensorflow.js 的 html 中即可
//提示:输出的值都是打印在浏览器开发者工具的控制台,而不是页面上 const initialValues = tf.zeros([5]);
const biases = tf.variable(initialValues); // 初始化biases
biases.print(); // 输出: [0, 0, 0, 0, 0] const updatedValues = tf.tensor1d([0, 1, 0, 1, 0]);
biases.assign(updatedValues); // 更新 biases的值
biases.print(); // 输出: [0, 1, 0, 1, 0] </script>

如上所示,首先使用 tf.zeros 得到一个张量,然后利用这个张量初始化得到一个变量,接着我们就可以打印这个变量,并且通 Object.prototype.toString.call(biases) 方法可以判断变量也是一个对象,接着,我们再生成一个张量,然后变量调用 assign 方法传入这个张量,就可以得到一个新的变量了,如下:



由此我们可以得出一个结论:变量由张量生成,且张量不可变而变量可变。

更多文章

Tensoflw.js - 01 - 安装与入门(中文注释)的更多相关文章

  1. Tensoflw.js - 02 - 模型与内存管理(易懂)

    Tensoflw.js - 02 - 模型与内存管理(易懂) 参考 W3Cschool 文档:https://www.w3cschool.cn/tensorflowjs/ 本文主要翻译一些英文注释,添 ...

  2. impress.js 中文注释

    impress.js 中文注释 玄魂 /** * impress.js *(本翻译并未完全遵照原作者的注释翻译) * Impress.js 是受 Prezi启发,基于现代浏览器的 CSS3 与 Jav ...

  3. Node.js学习笔记(2) - Node.js安装及入门hello world

    今天来简单的记录一下Node.js的安装配置以及简单的入门 一.Node.js的安装 1.windows下的安装 windows下的安装很简单,只需要去官网http://nodejs.org中,找到w ...

  4. Node.js安装和入门 - 2行代码让你能够启动一个Server

    转自:http://josh-persistence.iteye.com/blog/1979552  备忘 Node.js是一个轻松构建快速,可扩展的网络应用平台建立在Chrome的JavaScrip ...

  5. Java自动化测试框架-01 - TestNG之入门篇 - 大佬的鸡肋,菜鸟的盛宴(详细教程)

    TestNG是什么? TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框 ...

  6. Apache Hadoop2.x 边安装边入门

    完整PDF版本:<Apache Hadoop2.x边安装边入门> 目录 第一部分:Linux环境安装 第一步.配置Vmware NAT网络 一. Vmware网络模式介绍 二. NAT模式 ...

  7. [转载]tomcat的配置文件server.xml不支持中文注释的解决办法

    原文链接:http://tjmljw.iteye.com/blog/1500370 启动tomcat失败,控制台一闪而过,打开catalina的log发现错误指向了conf/server.xml,报错 ...

  8. bower安装使用入门详情

    bower安装使用入门详情   bower自定义安装:安装bower需要先安装node,npm,git全局安装bower,命令:npm install -g bower进入项目目录下,新建文件1.tx ...

  9. quartus ii 中文注释乱码解决办法

    转载自:http://bbs.ednchina.com/BLOG_ARTICLE_3027549.HTM 有些时候我们用Quartus ii 打开不同版本创建的工程文件时,往往会出现下列提示 点yes ...

随机推荐

  1. Confluence 6 安装 Active Directory 证书服务器

    如果证书服务器已经安装了的话,跳过这一步骤,直接进入下一步.下面步骤中的屏幕截图是从 Windows 2008 服务器版上安装的截图,针对 2000 和 2003 安装过程是一样的. 作为系统管理员登 ...

  2. nyoj1272表达式求值(递归法)

    递归写的,类似于之前的一道,但要更难一点,因为加入了'+','*'以及括号运算符,所以要考录周全: 这道题给了我很大启示,在第一道德基础上: 1!寻找括号的优先级,先找有没有不被任何括号夹住的加号,如 ...

  3. POJ-2251 Dungeon Master (BFS模板题)

    You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...

  4. 新学dfs(看懂了)

    在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走.从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走 ...

  5. ASP.NET的内置对象 —— Request 对象

    Request 对象最大的用途在于提交表单信息. (可获取页面间传递的值.客户端的 IP 地址等) 3.2.2 获取页面间传送的值 获取页面传送参数值是 Request 对象最广泛的应用之一. ASP ...

  6. zk客户端的ClientCnxn类

    ClientCnxn是客户端的类:该类管理zk客户端的socket io,维持一个可用服务器的列表. //ClientCnxn类 private final LinkedList<Packet& ...

  7. wordpress 使用less 样式无法及时刷新

    wordpress 样式无法及时刷新 wordpress编写style样式时,无法及时刷新页面,因此特意记录一番如何处理较好,网友的建议清除Chrome缓存,实时修改style携带的参数 折腾之旅开启 ...

  8. web移动端生产环境调试

    如果是开发环境,比较容易: 最笨的方法是手机开QQ电脑开QQ把做好的页面传给手机QQ直接打开.. 参考: http://blog.allenm.me/2014/05/mobile-web-debug- ...

  9. Oracle 数据库分析

    一.数据库分析 二.表的分析 1.分析表exec dbms_stats.gather_table_stats('SFISM4','R_SN_DETAIL_T',CASCADE=>TRUE);ex ...

  10. Python 多进程、多线程效率比较

    Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程.本篇来作个比较. 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 ...