设为首页 - 加入收藏 乌鲁木齐站长网 (http://www.0991zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 苹果 高手发表 腾讯 上线
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

前端人工智能:通过机器学习推导函数方程式--铂金Ⅲ

发布时间:2019-03-18 23:37 所属栏目:[经验] 来源:小蝌蚪
导读:什么是tensorflow.js tensorflow.js是一个能运行在浏览器和nodejs的一个机器学习、机器训练的javascript库,众所周知在浏览器上用javascript进行计算是很慢的,而tensorflow.js会基于WebGL通过gpu进行运算加速来对高性能的机器学习模块进行加速运算,从而

?前端人工智能:通过机器学习推导函数方程式--铂金Ⅲ

什么是tensorflow.js

tensorflow.js是一个能运行在浏览器和nodejs的一个机器学习、机器训练的javascript库,众所周知在浏览器上用javascript进行计算是很慢的,而tensorflow.js会基于WebGL通过gpu进行运算加速来对高性能的机器学习模块进行加速运算,从而能让我们前端开发人员能在浏览器中进行机器学习和训练神经网络。本文要讲解的项目代码,就是要根据一些规则模拟数据,然后通过机器学习和训练,根据这些数据去反向推测出生成这些数据的公式函数。

基本概念

接下来我们用五分钟过一下tensorflow的基本概念,这一部分主要介绍一些概念,笔者会用一些类比方式简单的讲述一些概念,旨在帮助大家快速理解,但是限于精力和篇幅,概念的具体详细定义读者们还是多去参照官方文档。

张量(tensors)

张量其实就是一个数组,可以一维或多维数组。张量在tensorflow.js里就是一个数据单元。

  1. const?tensors?=?tf.tensor([[1.0,?2.0,?3.0],?[10.0,?20.0,?30.0]]);??
  2. tensors.print();?

在浏览器里将会输出:

tensorflow还提供了语义化的张量创建函数:tf.scalar(创建零维度的张量), tf.tensor1d(创建一维度的张量), tf.tensor2d(创建二维度的张量), tf.tensor3d(创建三维度的张量)、tf.tensor4d(创建四维度的张量)以及 tf.ones(张量里的值全是1)或者tf.zeros(张量里的值全是0)。

变量(variable)

张量tensor是不可变的,而变量variable是可变的,变量是通过张量初始化而来,代码如下:

  1. const?initialValues?=?tf.zeros([5]);//[0,?0,?0,?0,?0]??
  2. const?biases?=?tf.variable(initialValues);?//通过张量初始化变量??
  3. biases.print();?//输出[0,?0,?0,?0,?0]?

操作(operations)

张量可以通过操作符进行运算,比如add(加法)、sub(减法)、mul(乘法)、square(求平方)、mean(求平均值) 。

  1. const?e?=?tf.tensor2d([[1.0,?2.0],?[3.0,?4.0]]);??
  2. const?f?=?tf.tensor2d([[5.0,?6.0],?[7.0,?8.0]]);??
  3. const?ee_plus_f?=?e.add(f);??
  4. e_plus_f.print();?

上面的例子输出:

内存管理(dispose和tf.tidy)

dispose和tf.tidy都是用来清空GPU缓存的,就相当于咱们在编写js代码的时候,通过给这个变量赋值null来清空缓存的意思。

  1. var?a?=?{num:?1};??
  2. a?=?null;//清除缓存?

dispose

张量和变量都可以通过dispose来清空GPU缓存:

  1. const?x?=?tf.tensor2d([[0.0,?2.0],?[4.0,?6.0]]);??
  2. const?xx_squared?=?x.square();??
  3. x.dispose();??
  4. x_squared.dispose();??
  5. tf.tidy?

当有多个张量和变量的时候,如果挨个调用dispose就太麻烦了,所以有了tf.tidy,将张量或者变量操作放在tf.tidy函数中,就会自动给我们优化和清除缓存。

  1. const?average?=?tf.tidy(()?=>?{??
  2. ??const?y?=?tf.tensor1d([4.0,?3.0,?2.0,?1.0]);??
  3. ??const?z?=?tf.ones([1]);??
  4. ??return?y.sub(z);??
  5. });??
  6. average.print()??

以上例子输出:

模拟数据

首先,我们要模拟一组数据,根据 这个三次方程,以参数a=-0.8, b=-0.2, c=0.9, d=0.5生成[-1, 1]这个区间内一些有误差的数据,数据可视化后如下:

假设我们并不知道a、b、c、d这四个参数的值,我们要通过这一堆数据,用机器学习和机器训练去反向推导出这个多项式函数方程的和它的a、b、c、d这四个参数值。

设置变量(Set up variables)

因为我们要反向推导出多项式方程的a、b、c、d这四个参数值,所以首先我们要先定义这四个变量,并给他们赋上一些随机数当做初始值。

  1. const?a?=?tf.variable(tf.scalar(Math.random()));??
  2. const?b?=?tf.variable(tf.scalar(Math.random()));??
  3. const?c?=?tf.variable(tf.scalar(Math.random()));??
  4. const?d?=?tf.variable(tf.scalar(Math.random()));?

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章