[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)
上一篇 2022年7月16日 下午8:00
下一篇 2022年7月16日 下午8:00


相关推荐

  • 毕业一年

    又到毕业季,一年就这么过来了,这一年独自在北京,过的单调但也充实,就做了两件事,减肥和学习。减肥在校期间不怎么运动,偶尔跑步但抵不过吃的多,永远是饭桌上吃到最后的人,肉不停的长,最胖时90kg。去年年底的时候,有一天照镜子,捏着肚子上的肉实在看不下去,下决心减肥。左图87kg到右图71kg,体脂从25降到18左右。 减肥的过程是痛苦的,但是成就感爆棚,让人更加自信,也更加相信付出会有回报。学习看

    2022年3月11日
    37
  • JavaScript中window.open()和Window Location href的区别「建议收藏」

    JavaScript中window.open()和Window Location href的区别「建议收藏」目录1:window.location.href的用法:2:window.open()的用法3:window.open和window.location.href的区别1:区别2.window.open不一定是打开一个新窗口!!!!!!!!3:关于重新定位4.:在框架内指定页面打开连接5:是否打开其他网站地址6:window.open()经过设置后的弹…

    2022年7月12日
    24
  • vue 二维码生成插件_vue生成二维码组件

    vue 二维码生成插件_vue生成二维码组件效果图1,下插件cnpmivue-qr–save2,在需要的页面引入,或者全局引入,我这里是局部引入,因为只有一个页面用到了。html<vue-qr:text=”text”:size=”200″:margin=”0″/>jsimportVueQrfrom’vue-qr’exportdefault{components:{VueQr},data(){ return{ text:”,//二维码内容 .

    2022年10月4日
    4
  • pycharm 2021.11.3激活(注册激活)

    (pycharm 2021.11.3激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
    71
  • 使用fastJson解析json字符串时出现反斜杠问题解决

    使用fastJson解析json字符串时出现反斜杠问题解决使用 fastJson 导入的 pom 依赖 dependency groupId com alibaba groupId artifactId fastjson artifactId version 1 2 68 version scope compile scope dependency

    2026年3月17日
    2
  • pycharm配置tensorflow环境_python3.6对应的tensorflow版本

    pycharm配置tensorflow环境_python3.6对应的tensorflow版本说明:如果只是为了入门学习TensorFlow框架,个人觉得,没必要上来就整GPU版本(主要是那个太复杂,安装真让人劝退),所以本文记录的是直接在pycharm里安装tensorflow,并运行demo。安装3.5或3.6版本的python,3.7及以上的版本貌似还不支持TensorFlow,博主用的是3.6.8版本,特别注意python还要求得是64位的,否则后面安装TensorFlow会…

    2022年8月29日
    3

发表回复

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

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