加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

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

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

我们在外层定义了一个numIterations = 75,意思是我们要进行75次机器训练。在每一次循环中我们都调用了optimizer.minimize这个函数,它会不断地调用SGD随机梯度下降法来不断地更新和修正我们的a、b、c、d这四个参数,并且每一次return的时候都会调用我们的基于MSE均方误差loss损失函数来减小损失。经过这75次的机器训练和机器学习,加上SGD随机梯度下降优化器和loss损失函数进行校准,最后就会得到非常接近正确数值的a、b、c、d四个参数。

我们注意到这个函数最后有一行tf.nextFrame(),这个函数是为了解决在机器训练和机器学习的过程中会进行大量的机器运算,会阻塞浏览器,导致ui没法更新的问题。

我们调用这个机器训练的函数train:

  1. import {generateData} from './data';//这个文件在git仓库里  
  2. const trainingData = generateData(100, {a: -.8, b: -.2, c: .9, d: .5});  
  3. await train(trainingData.xs, trainingData.ys, 75); 

调用了train函数后,我们就可以拿到a、b、c、d四个参数了。

  1. console.log('a', a.dataSync()[0]);  
  2.  console.log('b', b.dataSync()[0]);  
  3.  console.log('c', c.dataSync()[0]);  
  4.  console.log('d', d.dataSync()[0]); 

最后得到的值是a=-0.564, b=-0.207, c=0.824, d=0.590,和原先我们定义的实际值a=-0.8, b=-0.2, c=0.9, d=0.5非常的接近了,对比图如下:

项目运行和安装

本文涉及到的代码安装和运行步骤如下:

  1. git clone https://github.com/tensorflow/tfjs-examples  
  2. cd tfjs-examples/polynomial-regression-core  
  3. yarn  
  4. yarn watch 

tensorflow.js的官方example里有很多个项目,其中polynomial-regression-core(多项式方程回归复原)这个例子就是我们本文重点讲解的代码,我在安装的过程中并不太顺利,每一次运行都会报缺少模块的error,读者只需要根据报错,把缺少的模块挨个安装上,然后根据error提示信息上google去搜索相应的解决方法,最后都能运行起来。

结语

bb了这么多,本来不想写结语的,但是想想,还是想表达一下本人内心的一个搞笑荒谬的想法。我为什么会对这个人工智能的例子感兴趣呢,是因为,在我广西老家(一个偏远的山村),那边比较封建迷信,,经常拿一个人的生辰八字就去计算并说出这个人一生的命运,balabala说一堆,本人对这些风气一贯都是嗤之以鼻。但是,但是,但是。。。。荒谬的东西来了,我老丈人十早年前因为车祸而断了一条腿,几年前带媳妇和老丈人回老家见亲戚,老丈人觉得南方人这些封建迷信很好玩,就拿他自己的生辰八字去给乡下的老者算了一下,结果那个老人说了很多,并说出了我老丈人出车祸的那一天的准确的日期,精确到那一天的下午大致时间。。。。。这。。。。这就好玩了。。。当年整个空气突然安静的场景至今历历在目,这件事一直记在心里,毕竟我从来不相信这些鬼鬼乖乖的东西,一直信奉科学是至高无上带我们飞的唯一真理,但是。。。真的因为这件事,让我菊紧蛋疼不知道怎么去评价。。。。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读