设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

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

发布时间:2019-03-18 16:26 所属栏目:19 来源:小蝌蚪
导读:根据如上所述,我们的损失函数代码如下: functionloss(prediction,labels){ consterror=prediction.sub(labels).square().mean(); returnerror; } 预期值prediction减去实际值labels,然后平方后求平均数即可。 机

根据如上所述,我们的损失函数代码如下:

  1. function loss(prediction, labels) {  
  2.   const error = prediction.sub(labels).square().mean();  
  3.   return error;  

预期值prediction减去实际值labels,然后平方后求平均数即可。

机器训练(training)

好了,上面说了这么多,做了这么多的铺垫和准备,终于到了最关键的步骤,下面这段代码和函数就是真正的根据数据然后通过机器学习和训练计算出我们想要的结果最重要的步骤。我们已经定义好了基于SGD随机梯度下降的优化器optimizer,然后也定义了基于MSE均方误差的损失函数,我们应该怎么结合他们两个装备去进行机器训练和机器学习呢,看下面的代码。

  1. const numIterations = 75;  
  2. async function train(xs, ys, numIterations) {  
  3.   for (let iter = 0; iter < numIterations; iter++) {  
  4.     //优化器:SGD随机梯度下降  
  5.     optimizer.minimize(() => {  
  6.       const pred = predict(xs);  
  7.       //损失函数:MSE均方误差  
  8.       return loss(pred, ys);  
  9.     });  
  10.     //防止阻塞浏览器  
  11.     await tf.nextFrame();  
  12.   }  

我们在外层定义了一个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说一堆,本人对这些风气一贯都是嗤之以鼻。但是,但是,但是。。。。荒谬的东西来了,我老丈人十早年前因为车祸而断了一条腿,几年前带媳妇和老丈人回老家见亲戚,老丈人觉得南方人这些封建迷信很好玩,就拿他自己的生辰八字去给乡下的老者算了一下,结果那个老人说了很多,并说出了我老丈人出车祸的那一天的准确的日期,精确到那一天的下午大致时间。。。。。这。。。。这就好玩了。。。当年整个空气突然安静的场景至今历历在目,这件事一直记在心里,毕竟我从来不相信这些鬼鬼乖乖的东西,一直信奉科学是至高无上带我们飞的唯一真理,但是。。。真的因为这件事,让我菊紧蛋疼不知道怎么去评价。。。。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读