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. Android程序员眼中世界上最遥远的距离

    世界上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离: 世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己: 世界上最真情的相依,是你在try我在catch. ...

  2. Spring Boot 系统要求

    Spring Boot 2.1.0.RELEASE 方需要 Java 8 or 9 的支持和 Spring Framework 5.1.2.RELEASE 以上的版本. 明确的构建工具的支持,请参考下 ...

  3. 超详细:Python(wordcloud+jieba)生成中文词云图

    # coding: utf-8 import jieba from scipy.misc import imread # 这是一个处理图像的函数 from wordcloud import WordC ...

  4. Python的数据类型1数值和字符串

    Python的交互器 在讲这个之前,我要先讲一下python的交互器,之后讲解代码(除了做简单项目)都在交互器上进行,这样可能比较直接一些,有利于刚接触python的人理解代码 python在命令行自 ...

  5. Sql Server中集合的操作(并集、差集、交集)学习

    首先我们做一下测试数据 1.创建测试数据 --创建人员表1-- create table Person1 ( Uid ,) primary key, Name ) not null ) --创建人员表 ...

  6. POJ 3259 Bellman_Ford算法

    额.关键是读题.反正我是看了解题报告才知道意思的.给你n个点.m条路.双向的.耗费时间.w个虫洞.单向的.时间为负值.问你是否可以从某一点返回看到之前的自己.即为判断是不是有负环.用Bellman_F ...

  7. Jena RDF API

    1.  jena 简单使用 RDF可以用简单的图示:包括节点以及连接节点的带有箭头的线段来理解. 这个例子中,资源 http://.../JohnSmith 表示一个人.这个人的全名是 John Sm ...

  8. Flash网页mp3播放器代码(3例)

    第一款:可以添加多首歌 代码如下:可以添加多首歌曲中间用 |  间隔符号隔开 <EMBED  height=20 type=application/x-shockwave-flash plugi ...

  9. Java——线程定时器

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  10. 打开WORD文档出错提示

    打开WORD文档出错提示: Microsoft Office Word 遇到问题需要关闭.我们对此引起的不便表示抱歉. 您正在处理的信息有可能丢失.Microsoft Office Word 可以尝试 ...