[TensorFlowJS只如初见]实战三·使用TensorFlowJS拟合曲线

[TensorFlowJS只如初见]实战三·使用TensorFlowJS拟合曲线问题描述拟合y=x*x-2x+3+0.1(-1到1的随机值)曲线给定x范围(0,3)问题分析在直线拟合博客中,我们使用最简单的y=wx+b的模型成功拟合了一条直线,现在我们在进一步进行曲线的拟合。简单的y=wx+b模型已经无法满足我们的需求,需要利用更多的神经元来解决问题了。代码<html><head><script…

大家好,又见面了,我是你们的朋友全栈君。

[TensorFlowJS只如初见]实战三·使用TensorFlowJS拟合曲线

  • 问题描述
    拟合y= x*x -2x +3 + 0.1(-1到1的随机值) 曲线
    给定x范围(0,3)

  • 问题分析
    直线拟合博客中,我们使用最简单的y=wx+b的模型成功拟合了一条直线,现在我们在进一步进行曲线的拟合。简单的y=wx+b模型已经无法满足我们的需求,需要利用更多的神经元来解决问题了。

  • 代码

<html>

<head>
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"> </script>

</head>

<body>
  <button class="btn btn-primary" onclick="fnRun0();">开始0</button>
  <div id="p0Id">out0</div>
  <button class="btn btn-primary" onclick="fnRun1();">开始1</button>
  <div id="p1Id">out1</div>
  <button class="btn btn-primary" onclick="fnRun2();">开始2</button>
  <div id="p2Id">out2</div>
</body>

<script> function get_ys(xs) { 
     var ys = new Array(); for (var i = 0; i < xs.length; i++) { 
     ys[i] = xs[i] * xs[i] - 2 * xs[i] + 3 + (0.001 * (2 * Math.random() - 1)); } return (ys); } var xs = new Array(); for (var i = 0; i < 200; i++) { 
     xs[i] = 0.01 * i; } var ys = get_ys(xs); const xst = tf.tensor(xs, [xs.length, 1]); const yst = tf.tensor(ys, [ys.length, 1]); const a = tf.variable(tf.scalar(Math.random())); const b = tf.variable(tf.scalar(Math.random())); const c = tf.variable(tf.scalar(Math.random())); function predict(x) { 
     return tf.tidy(() => { 
     return a.mul(x.square()) .add(b.mul(x)) .add(c); }); } function loss(prediction, labels) { 
     const error = prediction.sub(labels).square().mean(); return error; } const numIterations = 1000; const learningRate = 0.12; const optimizer = tf.train.sgd(learningRate); function train(xst, yst, numIterations) { 
     for (var iter = 0; iter < numIterations+1; iter++) { 
     optimizer.minimize(() => { 
     const predsYs = predict(xst); if(iter%100==0){ 
     console.log(iter+" steps loss is "+loss(predsYs, yst)); } return loss(predsYs, yst); }); } const test_xs = tf.tensor([0.5,1,1.5],[3,1]); predict(test_xs).print(); } train(xst,yst,numIterations); </script>

</html>
  • 输出结果
    进行1000轮训练以后,我们输入[0.5,1,1.5]进行预测,得到结果为
    [[2.2503195],
    [2.0105994],
    [2.2543631]]
    较好地拟合了曲线。

log

"0 steps loss is Tensor
    1.7456094026565552"
"100 steps loss is Tensor
    0.08455191552639008"
"200 steps loss is Tensor
    0.040247201919555664"
"300 steps loss is Tensor
    0.0191580131649971"
"400 steps loss is Tensor
    0.009119458496570587"
"500 steps loss is Tensor
    0.004341088235378265"
"600 steps loss is Tensor
    0.0020665652118623257"
"700 steps loss is Tensor
    0.0009838765254244208"
"800 steps loss is Tensor
    0.0004685141902882606"
"900 steps loss is Tensor
    0.00022319876006804407"
"1000 steps loss is Tensor
    0.00010642936103977263"
"Tensor
    [[2.2503195],
     [2.0105994],
     [2.2543631]]"
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160488.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据结构 哈希表设计

    实验6哈希表设计一、实验目的熟练掌握哈希表的构造方法,深刻理解哈希表与其他结构表的实质性差别。 二、实验内容程序的功能是对一批关键字集合采用除留余数法和线性探测再散列的方法解决冲突来建立相应的哈希表和完成查找过程及平均查找长度的计算。【问题描述】    研究哈希(HAXI)表查找技术的两个重要问题是:构造HAXI函数和处理冲突。现在要求针对某个数据集合中的关键字设

    2022年4月9日
    54
  • python的第三方库是用什么实现的_python 第三方库

    python的第三方库是用什么实现的_python 第三方库编写自己的第三方库当你看见你编程时所用到的所有Python第三方库时,有没有想过,他们是怎么被允许使用的呢?这篇教程,帮你制作一个属于自己的第三方库!1.你需要的工具pycharmsetuptools库twine库2.详细步骤首先,打开pycharm,新建一个项目然后选择编译器Virtualenv,新建一个虚拟环境等待虚拟环境创建完成,如果默认存在main.py,就删除它然后,新建一个pythonpackage文件夹,取名为你要上传的库的名字创建后,文件夹中默认有__init__

    2022年8月31日
    3
  • Idea激活码最新教程2021.1.1版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2021.1.1版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2021 1 1 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2021 1 1 成功激活

    2025年5月22日
    2
  • 手机NFC模拟M1门禁卡、写CUID白卡的一些研究记录

    手机NFC模拟M1门禁卡、写CUID白卡的一些研究记录一、需求场景近来小区安装了智能门禁,但只配发了一张门禁卡,不方便使用,于是产生了用手机模拟门禁卡,或者复制一张门禁卡的想法。本文使用的软件:(CSDN无法修改下载积分了。。。)包括手机NFC读写卡神器MifareClassicTool(MCT)2.2.5最新版、手机读卡工具NFCTagInfo、NFC卡模拟软件Cardemulator、RE管理器,以及一款NFC模拟…

    2022年6月10日
    178
  • 单片机控制步进电机程序c语言正反转停止,单片机控制步进电机正反转程序

    单片机控制步进电机程序c语言正反转停止,单片机控制步进电机正反转程序该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include”reg52.h”#defineuintunsignedint#defineucharunsignedcharsbitk1=P3^4;sbitk2=P3^5;sbitk3=P3^6;voiddelay(uintxms){uinti,j;for(i=xms;i>0;i–)for(j=110;j>0;j-…

    2022年5月31日
    54
  • Sublime Text 2 实用快捷键[Mac OS X]

    Sublime Text 2 实用快捷键[Mac OS X]

    2021年5月11日
    191

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号