运行代码:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3DLR = 0.1
REAL_PARAMS = [1.2, 2.5]
INIT_PARAMS = [[5, 4],[5, 1],[2, 4.5]][2]x = np.linspace(-1, 1, 200, dtype=np.float32)   # x datay_fun = lambda a, b: np.sin(b*np.cos(a*x))
tf_y_fun = lambda a, b: tf.sin(b*tf.cos(a*x))noise = np.random.randn(200)/10
y = y_fun(*REAL_PARAMS) + noise         # target# tensorflow graph
a, b = [tf.Variable(initial_value=p, dtype=tf.float32) for p in INIT_PARAMS]
pred = tf_y_fun(a, b)
mse = tf.reduce_mean(tf.square(y-pred))
train_op = tf.train.GradientDescentOptimizer(LR).minimize(mse)a_list, b_list, cost_list = [], [], []
with tf.Session() as sess:sess.run(tf.global_variables_initializer())for t in range(400):a_, b_, mse_ = sess.run([a, b, mse])a_list.append(a_); b_list.append(b_); cost_list.append(mse_)    # record parameter changesresult, _ = sess.run([pred, train_op])                          # training# visualization codes:
print('a=', a_, 'b=', b_)
plt.figure(1)
plt.scatter(x, y, c='b')    # plot data
plt.plot(x, result, 'r-', lw=2)   # plot line fitting
# 3D cost figure
fig = plt.figure(2); ax = Axes3D(fig)
a3D, b3D = np.meshgrid(np.linspace(-2, 7, 30), np.linspace(-2, 7, 30))  # parameter space
cost3D = np.array([np.mean(np.square(y_fun(a_, b_) - y)) for a_, b_ in zip(a3D.flatten(), b3D.flatten())]).reshape(a3D.shape)
ax.plot_surface(a3D, b3D, cost3D, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'), alpha=0.5)
ax.scatter(a_list[0], b_list[0], zs=cost_list[0], s=300, c='r')  # initial parameter place
ax.set_xlabel('a'); ax.set_ylabel('b')
ax.plot(a_list, b_list, zs=cost_list, zdir='z', c='r', lw=3)    # plot 3D gradient descent
plt.show()

运行结果:

转载于:https://www.cnblogs.com/darklights/p/9939339.html

TensorFlow从入门到理解(六):可视化梯度下降相关推荐

  1. 可视化深入理解损失函数与梯度下降 | 技术头条

    作者 | Hugegene 译者 | 刘畅 责编 | Rachel 出品 | AI科技大本营(id:rgznai100) [导语]本文对梯度函数和损失函数间的关系进行了介绍,并通过可视化方式进行了详细 ...

  2. 【机器学习基础】(二):理解线性回归与梯度下降并做简单预测

    预测从瞎猜开始 按上一篇文章所说,机器学习是应用数学方法在数据中发现规律的过程.既然数学是对现实世界的解释,那么我们回归现实世界,做一些对照的想象. 想象我们面前有一块塑料泡沫做的白板,白板上分布排列 ...

  3. TensorFlow 2.0 - 张量/自动求导/梯度下降

    文章目录 1. 张量 2. 自动求导.梯度下降 学习于:简单粗暴 TensorFlow 2 1. 张量 import tensorflow as tf print(tf.__version__) # ...

  4. 直观理解神经网络和梯度下降

    来张图吧 Repeat{ for j=1 to m{ theta_i = theta_i - alpha * J'(theta) # 这个就是上面写的更新公式 } } 好了这个和神经网络的反向传播啥关 ...

  5. 梯度的直观理解_梯度下降最直观的理解

    最近在学习机器学习,入门第一课就是「梯度下降」.看了不少教程都没有很好地理解,直到看到下面这篇文章,算是通俗易懂地理解了. 作者:六尺帐篷 链接:https://www.jianshu.com/p/c ...

  6. 线性回归之梯度下降详解

    在了解梯度下降(Gradient Descent)之前,我们先要知道有关线性回归的基本知识,这样可以进一步的加深对梯度下降的理解,当然梯度下降(Gradient Descent)并不单单只能进行回归预 ...

  7. 图解梯度下降背后的数学原理

    https://www.toutiao.com/a6672898771514294796/ 敏捷在软件开发过程中是一个非常著名的术语,它背后的基本思想很简单:快速构建一些东西,然后得到一些反馈,根据反 ...

  8. 最优化方法:梯度下降(批梯度下降和随机梯度下降)

    http://blog.csdn.net/pipisorry/article/details/23692455 梯度下降法(Gradient Descent) 梯度下降法是一个一阶最优化算法,通常也称 ...

  9. 3. 机器学习中为什么需要梯度下降?梯度下降算法缺点?_浅谈随机梯度下降amp;小批量梯度下降...

    机器学习三要素 上次的报告中,我们介绍了一种用于求解模型参数的迭代算法--梯度下降法.首先需要明确一点,即"梯度下降算法"在一个完整的统计学习流程中,属于什么?根据<统计学习 ...

最新文章

  1. TVM如何训练TinyML
  2. SDUT OJ[3109] 买买买 背包 dp
  3. java中字符串的截取
  4. java 字节的复制_JAVA中字节流复制文件
  5. 使用泛型解决之前的问题
  6. 黑盒法测试c语言,黑盒测试用例练习题.pdf
  7. 【渝粤教育】国家开放大学2018年秋季 1087t数学分析专题研究 参考试题
  8. oracle无效的关联运算符,菜鸟请教:关联操作符=>用法
  9. linux乌班图中文输入法,Ubuntu Linux怎么安装中文输入法
  10. c# image转换为bitmap,C# - 转换WPF Image.source到System.Drawing.Bitmap
  11. 两车相撞的力怎么计算_两车都向中间并线时相撞 算谁的责任
  12. 保存最大的前20项暴力--Heritage of skywalkert
  13. NUXT.JS原理简述
  14. java 实现魔兽搜索器 魔兽对战平台
  15. 计算机网络陈晴,最新计算机网络专业参考文献 计算机网络专业参考文献怎么写...
  16. 【引用】DMA内存申请--dma_alloc_coherent
  17. 二:统计基础:描述统计
  18. Pairwise(FCC算法)
  19. 计算机主板用料,揭开用料谜团 教你怎样看主板的质量
  20. 简单的popupwindow提示框

热门文章

  1. python数据结构与算法第10讲_Python数据结构与算法10:基本结构:练习题1
  2. windows脚本bat批处理 关闭显示器 关闭显示器脚本bat
  3. Android常见界面布局(详细介绍)
  4. 顺序执行命令需要哪个符号链接_18年MBA联考如何安排答题时间及顺序
  5. @Transactional注解的几个参数--事务传播控制--事务隔离级别--异常与回滚
  6. c语言报刊杂志订阅系统,中国报刊杂志大全_报刊大全_报刊杂志订阅
  7. python 30个小代码_30个Python常用极简代码,拿走就用
  8. 晓庄2019c语言真题卷,南京晓庄学院—C语言期末考试复习提纲
  9. python pil怎么调用_python3如何使用pil
  10. 怎么使用计算机算法,浅谈如何在用计算机来更好的实现Floyd算法