Python使用tensorflow中梯度下降算法求解变量最优值
TensorFlow是一个用于人工智能的开源神器,是一个采用数据流图(data flow graphs)用于数值计算的开源软件库。数据流图使用节点(nodes)和边线(edges)的有向图来描述数学计算,图中的节点表示数学操作,也可以表示数据输入的起点或者数据输出的终点,而边线表示在节点之间的输入/输出关系,用来运输大小可动态调整的多维数据数组,也就是张量(tensor)。TensorFlow可以在普通计算机、服务器和移动设备的CPU和GPU上展开计算,具有很强的可移植性,并且支持C++、Python等多种语言。
import tensorflow as tf
import numpy as np
import time
#使用 NumPy 生成随机数据, 总共 2行100列个点.
x_data = np.float32(np.random.rand(2, 200))
#矩阵乘法
#这里的W=[0.100, 0.200]和b=0.300是理论数据
通过后面的训练来验证
y_data = np.dot([0.100, 0.200], x_data) + 0.300
#构造一个线性模型,训练求解W和b
#初始值b = [0.0]
b = tf.Variable(tf.zeros([1]))
#初始值W为1x2的矩阵,元素值介于[-1.0, 1.0]区间
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
#构建训练模型,matmul为矩阵乘法运算
y = tf.matmul(W, x_data) + b
#最小均方差
loss = tf.reduce_mean(tf.square(y - y_data))
#使用梯度下降算法进行优化求解
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
#初始化变量
init = tf.global_variables_initializer()
with tf.Session() as sess:
#初始化
sess.run(init)
#拟合平面,训练次数越多越精确,但是也没有必要训练太多次
for step in range(0, 201):
sess.run(train)
#显示训练过程,这里演示了两种查看变量值的方法
print(step, sess.run(W), b.eval())
运行结果如下,可以发现求解的结果非常接近理论值,为避免浪费大家流量,这里省略了中间的180个训练结果。
0 [[ 0.15414073 0.32496157]] [ 0.43636867]
1 [[ 0.03701844 0.20617545]] [ 0.21209587]
2 [[ 0.10094656 0.26214167]] [ 0.32871172]
3 [[ 0.07112053 0.22834063]] [ 0.26936483]
4 [[ 0.08938536 0.24124807]] [ 0.30078542]
5 [[ 0.08256587 0.23040327]] [ 0.28532556]
6 [[ 0.08844876 0.23214042]] [ 0.29402208]
7 [[ 0.08755529 0.22768299]] [ 0.29021722]
8 [[ 0.08995744 0.22669716]] [ 0.29283032]
9 [[ 0.09047545 0.2241728 ]] [ 0.29209939]
10 [[ 0.09179883 0.22267541]] [ 0.2930637]
...
191 [[ 0.10000042 0.20000042]] [ 0.29999956]
192 [[ 0.1000004 0.20000039]] [ 0.29999959]
193 [[ 0.10000037 0.20000036]] [ 0.29999962]
194 [[ 0.10000035 0.20000033]] [ 0.29999962]
195 [[ 0.10000034 0.20000032]] [ 0.29999965]
196 [[ 0.10000032 0.2000003 ]] [ 0.29999968]
197 [[ 0.1000003 0.20000029]] [ 0.29999968]
198 [[ 0.10000029 0.20000027]] [ 0.29999971]
199 [[ 0.10000027 0.20000026]] [ 0.29999971]
200 [[ 0.10000026 0.20000026]] [ 0.29999974]
Python使用tensorflow中梯度下降算法求解变量最优值相关推荐
- 基于jupyter notebook的python编程-----利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比
基于jupyter notebook的python编程-----利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比目录 一.梯度下降算法的基本原理 1.梯度下降算法的基本原理 二.题 ...
- python实现牛顿法和梯度下降法求解对率回归_最优化问题中,牛顿法为什么比梯度下降法求解需要的迭代次数更少?...
多图预警 本文讲你肯定能懂的机器学习多维极值求解,主要讲梯度下降和牛顿法的区别应该能够完美的回答题主的问题 事先说明 本文面向学习过高等数学统计学和线性代数基础知识的本科生,并假设读者拥有基本的矩阵运 ...
- python中可以用中文作为变量-在Python 3.x中可以使用中文作为变量名。
[判断题]Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型. [填空题]Python内置函数__用来返回序列中的最大元素 [填空题]表达式 int(4**0.5) 的值为 ...
- Python:Tensorflow中两个稀疏张量相乘
Python:Tensorflow中两个稀疏张量相乘 博主在想让两个稀疏张量进行相乘时,发现不能用tf.matmul.tf.sparse_matmul.tf.sparse_tensor_dense_m ...
- 批量梯度下降python实现_python实现梯度下降算法的实例详解
python版本选择 这里选的python版本是2.7,因为我之前用python3试了几次,发现在画3d图的时候会报错,所以改用了2.7. 数据集选择 数据集我选了一个包含两个变量,三个参数的数据集, ...
- tensorflow随机梯度下降算法使用滑动平均模型
在采用随机梯度下降算法训练神经网络时,使用滑动平均模型可以提高最终模型在测试集数据上的表现.在Tensflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模 ...
- 一文清晰讲解机器学习中梯度下降算法(包括其变式算法)
本篇文章向大家介绍梯度下降(Gradient Descent)这一特殊的优化技术,我们在机器学习中会频繁用到. 前言 无论是要解决现实生活中的难题,还是要创建一款新的软件产品,我们最终的目标都是使其达 ...
- 机器学习中梯度下降算法的实际应用和技巧
当在现实生活中的遇到问题时,我们总是希望找到最佳的解决方案.制造软件产品也是一样的道理,最优化的程序才是最理想的产品. 最优化意味着获得最佳输出.它既是一个数学的重要分支,也在现实生活中有着重要的作用 ...
- tensorflow中name_scope和variable_scope变量的使用
1. variable_scope的使用 首先,使用variable_scope可以很方便的管理get_varibale. 如何确定 get_variable 的 prefixed name? 1.1 ...
最新文章
- 转:AbstractQueuedSynchronizer的介绍和原理分析
- Ant Design 入门-引用自己命名的组件
- 多元统计第二章证明题_2020年中南大学应用统计硕士考研成功经验分享
- BZOJ 3870: Our happy ending( 状压dp )
- Verilog HDL语言设计4个独立的非门
- Hadoop YARN配置参数剖析—RM与NM相关参数
- spring的jdbcTemplate的多数据源的配置,springboot的jdbcTemplate的多数据源的配置
- NETCDF C and FORTRAN 4.2 安装笔记
- IBM Notes Domino V10.0.1第一组语言包发布!
- 图片从RGB转换成Lab
- npm报错Beginning October 4, 2021, all connections to the npm registry - including for package installa
- sizeof和strlen使用详解
- Laravel Guzzle封装
- 电脑上的记账本,添加无限个账户记录
- Failed to introspect Class from LaunchedURLClassLoader
- 用malloc开辟二维数组的三种办法
- 最新咸鱼数据采集工具
- python绘图输出上下标中的上下标
- 如何升级Jenkins版本
- Python获取全部股票数据
热门文章
- 搜索做成html静态,如何在静态的html里实现搜索功能?
- php sqrt函数,sqrt函数怎么使用
- 数据结构Java版实验五_实验五数据结构综合应用 20162310
- 知云文献翻译打不开_文献翻译工具-知云文献翻译
- 帆软报表如何传递主表原有参数给子表呢_报表工具--钻取功能--超链接下钻
- front mysql 导出表结构_肿么将mysql的表结构导出到sqlserver中
- python如何快速导入未安装模块_如何导入安装在sitepackages中的模块
- 修改10g RAC public or private or virtual IP [Oracle]
- 部署 Job (第四部分)
- ModelMap和ModelAndView的作用