假设原函数为 f(x) = 5x^2 + 3,为了估计出这个函数,定义参数未知的函数g(x, w) = w0 x^2 + w1 x + w2,现要找出适合的w使g(x, w) ≈ f(x)。将这个问题转化为求解参数w使得损失函数L(w) = ∑ (f(x) - g(x, w))^2最小,求解过程使用了随机梯度下降(Stochastic Gradient Descent)。求解问题的代码如下:

 import numpy as np
 import tensorflow as tf

 # Placeholders are used to feed values from python to TensorFlow ops. We define
 # two placeholders, one for input feature x, and one for output y.
 x = tf.placeholder(tf.float32)
 y = tf.placeholder(tf.float32)

 # Assuming we know that the desired function is a polynomial of 2nd degree, we
 # allocate a vector of size 3 to hold the coefficients. The variable will be
 # automatically initialized with random noise.
 w = tf.get_variable("w", shape=[3, 1])

 # We define yhat to be our estimate of y.
 f = tf.stack([tf.square(x), x, tf.ones_like(x)], 1)
 yhat = tf.squeeze(tf.matmul(f, w), 1)

 # The loss is defined to be the l2 distance between our estimate of y and its
 # true value. We also added a shrinkage term, to ensure the resulting weights
 # would be small.
 loss = tf.nn.l2_loss(yhat - y) + 0.1 * tf.nn.l2_loss(w)

 # We use the Adam optimizer with learning rate set to 0.1 to minimize the loss.
 train_op = tf.train.AdamOptimizer(0.1).minimize(loss)

 def generate_data():
     x_val = np.random.uniform(-10.0, 10.0, size=100)
     y_val = 5 * np.square(x_val) + 3
     return x_val, y_val

 sess = tf.Session()
 # Since we are using variables we first need to initialize them.
 sess.run(tf.global_variables_initializer())
 for _ in range(1000):
     x_val, y_val = generate_data()
     _, loss_val = sess.run([train_op, loss], {x: x_val, y: y_val})
     print(loss_val)
 print(sess.run([w]))

求解过程如下:

4380421.0
3147655.5
4625718.5
3493661.0
3061016.0
3057624.5
3104206.2
……
103.7392
98.461266
113.29772
104.56809
89.75495
……
17.354445
17.66056
17.716873
18.782757
16.015532
[array([[4.9863739e+00],
       [6.9120852e-04],
       [3.8031762e+00]], dtype=float32)]

TensorFlow样例一的更多相关文章

  1. Tensorflow样例代码分析cifar10

    github地址:https://github.com/tensorflow/models.git 本文分析tutorial/image/cifar10教程项目的cifar10_input.py代码. ...

  2. TensorFlow最佳实践样例

    以下代码摘自<Tensor Flow:实战Google深度学习框架> 本套代码是在 http://www.cnblogs.com/shanlizi/p/9033330.html 基础上进行 ...

  3. TensorFlow入门之MNIST样例代码分析

    这几天想系统的学习一下TensorFlow,为之后的工作打下一些基础.看了下<TensorFlow:实战Google深度学习框架>这本书,目前个人觉得这本书还是对初学者挺友好的,作者站在初 ...

  4. tensorflow学习笔记----tensorflow在windows的安装及TensorBoard中mnist样例

    前言:                                                                                                 ...

  5. TensorFlow图像预处理完整样例

    参考书 <TensorFlow:实战Google深度学习框架>(第2版) 以下TensorFlow程序完成了从图像片段截取,到图像大小调整再到图像翻转及色彩调整的整个图像预处理过程. #! ...

  6. 80、tensorflow最佳实践样例程序

    ''' Created on Apr 21, 2017 @author: P0079482 ''' #-*- coding:utf-8 -*- import tensorflow as tf #定义神 ...

  7. 吴裕雄 python 神经网络——TensorFlow TFRecord样例程序

    import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_dat ...

  8. YOLOv4 资源环境配置和测试样例效果

    YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...

  9. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

随机推荐

  1. Git添加和克隆远程库

    首先我们得有一个GitHub账号,然后把当前电脑的SSH Key添加到GitHub上面 第1步:创建SSH Key.在用户主目录下(可用 “cd ~”进入用户主目录),看看有没有.ssh目录,如果有, ...

  2. 吴裕雄 python 人工智能——基于Mask_RCNN目标检测(1)

    import os import sys import random import math import numpy as np import skimage.io import matplotli ...

  3. AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换

    一.Flutter AppBar 自定义顶部按钮图标.颜色 leading   在标题前面显示的一个控件,在首页通常显示应用的 logo:在其他界面通常显示为返回按钮 title  标题,通常显示为当 ...

  4. LVS、Tomcat、Nginx、PHP优化项

    一.LVS 性能调优的方法最佳实践1.最小化安装编译系统内核2.优化持久服务超时时间:    1)显示超时时间    #ipvsadm -Ln --timeout    #Timeout (tcp t ...

  5. CentOS7中JDK的安装和配置

    1.使用yum线上安装jdk 这里以jdk1.7为例进行示范,1.8同理 yum -y list java*                  #浏览线上所有jdk版本列表,列表太长了,会显示不全 y ...

  6. Linux虚拟机(CentOS)安装gcc, g++

    1.    确保自己的虚拟机联网 点击那个三角形可以选择连接网络 如果还是连不了网,参考https://www.cnblogs.com/xingbo/p/6100554.html 2.联网后,使用命令 ...

  7. IDEA导入maven项目不自动识别

    解决办法: 选中module的pom.xml,右键,选择" add as maven project",即可刷新为maven项目

  8. cf 76 div2

    传送门 题意 t组样例 n个学生, x最多交换次数 a交换的第一个位置 b交换的第二个位置 最多是交换n-1次,不懂的话可以找个数列自己模拟一下: 然后其他的就是abs(a-b)+x;两个位置之间的距 ...

  9. 杭电 1772 cake

    Cake Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  10. 测试Nginx中location的优先级!(重点)

    location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ~ 开头表示区分大小写的正则匹配 ~* 开头表示不区分大小写的正则匹配 ^~ 开头表示uri以某个常规字符串开头 ...