机器学习-曲线拟合

        tensorflow有关于曲线拟合的demo:https://github.com/tensorflow/tfjs-examples/tree/master/polynomial-regression-core

        将代码下载下来可以看到有几个主要的文件:data.js、index.js、ui.js。

        分别讲述一下三个文件的作用:

        ①.data.js:负责创建训练数据集合


这个函数构建了一个 y = ax^3 + bx^2 + cx + d的多项式,并在这个多项式的基础上增加噪声 add(tf.randomNormal([numPoints], 0, sigma)) 生成散点图


②index.js:根据数据集合训练模型

首先创建a、b、c、d,用随机数初始化,下面将输入数据集将它们训练直至拟合模型

定义训练的次数、学习速率(学习速率约高花费的时间越长,效果越好)、优化器(使用梯度下降法,一种快速收敛的算法)

定义预测函数,因为已经事先知道生成数据使用的函数公式,因此预测函数也使用这个公式


定义损失函数:用来判断每次预测结果的优劣程度,使用均方差


训练函数:按照定义的训练次数来迭代训练,重复预测->判断损失->再次预测的过程


训练代码:建立数据->训练->控制台打印预测结果

或者如官网demo所示,在网页上渲染为折线图


训练前:

训练后:


        难道这就结束了吗?不,这只是第一阶段,我们已经通过官网demo学习了曲线拟合的基本步骤:建立数据集合、预测模型、损失函数、优化器、训练逻辑。

       接下来,我们进入第二阶段,也是今天要分享的重点,拟合任意曲线。

       使用tensorflow.js的高阶API,

        ①使用张量模型:


        ②建立神经网络,高阶API非常方便的地方在于将输入层、隐藏层、输出层封装了内部的实现细节,只需要调用函数即可使用完整功能:


③建立数据->训练->控制台打印预测结果


代码非常简短,实际上隐藏了大量的细节。如果不使用高阶API的话,会是这样的代码:


拟合结果:



完整代码:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。