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. 『Sklearn』数据划分方法

    原理介绍 K折交叉验证: KFold,GroupKFold,StratifiedKFold, 留一法: LeaveOneGroupOut,LeavePGroupsOut,LeaveOneOut,Lea ...

  2. 供应商API补充(详解EBS接口开发之供应商导入)(转)

    原文地址  供应商导入的API补充(详解EBS接口开发之供应商导入) --供应商 --创建 AP_VENDOR_PUB_PKG.Create_Vendor ( p_api_version IN NUM ...

  3. linux tcpdump 抓包

    tcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04. tcpdump的命令格式 tcpdump的参数众多,通过man tcpdump ...

  4. windows下python安装Numpy、Scipy、matplotlib模块

    来源http://blog.csdn.net/Katrina_ALi/article/details/64922107 http://blog.csdn.net/qq_16633405/article ...

  5. Edraw安装图解

    Edraw安装图解   Success

  6. 微信小程序跨页面获取数据示例

    index.wxml <navigator class="navs" url="{{urls}}"> 中国 </navigator> i ...

  7. 16 extern用法、常量字符串的应用

    extern声明多文件共享变量的方法总结一下: 1).在一个源文件中定义,在其他需要使用的源文件中用extern声明.(仅一处定义,多处extern) 2).在一个源文件中定义,在其对应的头文件中ex ...

  8. sql server中的go

    1. 作用:向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号.2. 语法:一批 Transact-SQL 语句GO如Select 1Select 2Select 3 ...

  9. python 模块化管理,导入自己的模块(包)

    很多东西似懂非懂,或者当时看懂了,但是感觉不是很重要,经常不用,时间久了,也就变得似懂非懂了.今天被某度电话面试问道一个问题,就是模块倒入,其实我之前也是很仔细的研究过的,不过由于平时做的东西太简单, ...

  10. DevExpress v18.1新版亮点——ASP.NET Bootstrap篇(二)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress ASP.NET Bootstrap v18.1 的新功能,快 ...