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--------微信 Tinker 热修复 (二)

    前面简单介绍了一下Tinker热修复,今天就来分享一下如何在Android中使用,希望对各位有帮助. 1:Tinker 接入指南 在项目的build.gradle中,添加tinker-patch-gr ...

  2. Sonya and Ice Cream CodeForces - 1004E 树的直径, 贪心

    题目链接 set维护最小值贪心, 刚开始用树的直径+单调队列没调出来... #include <iostream>#include <cstdio> #include < ...

  3. git 添加tag

    前言 什么是tag?tag是节点的意思,一般在上线的时候使用.比如说:你在本地做了好几个功能,然后把这些功能提交到了上线的分支上,某个时刻,你想上线你的新功能,这个时候你需要你个tag来标记一下,告诉 ...

  4. 『cs231n』循环神经网络RNN

    循环神经网络 循环神经网络介绍摘抄自莫凡博士的教程 序列数据 我们想象现在有一组序列数据 data 0,1,2,3. 在当预测 result0 的时候,我们基于的是 data0, 同样在预测其他数据的 ...

  5. Linux中的yum是什么?如何配置?如何使用?

    yum,是Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow do ...

  6. 关于向后台请求数据(get请求,无参数传递),返回html代码(实际需要返回的是json数据)的解决方案

    this.$http.get(apis.schoolVideo, { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) 待续

  7. UVALive 4764 dp

    DES: 这是一个新的游戏.给你一套牌.编号从1到100000.正常来说.你手中的牌和这次翻的牌是一样的,就会加一分.但是.如果是999的话.加三分.所以问你最大的分是多少. 貌似是简单的DP吧.(D ...

  8. (zz)设置单元格的宽度和高度

    (zz)设置单元格的宽度和高度 博客分类: POI生成Excel   在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致.所以要设置单元格的宽度,我们就得从列 ...

  9. 关于反射的BindingFlag浅析

    MSDN关于BindingFlag的文档地址:https://msdn.microsoft.com/zh-cn/library/cexkb29a BindFlags作为一个特别的标志量,在反射中通过这 ...

  10. 网页不能显示PNG验证码的解决办法

    解决方法: 开始->运行,在运行输入框中输入 “regsvr32 c:\windows\system32\pngfilt.dll”(然后点击确定)如果在注册时出现 “已加载c:\windows\ ...