TensorFlow神经网络构造线性回归模型示例教程
作者:零尾 发布时间:2023-07-18 08:35:13
标签:TensorFlow,线性回归,模型
先制作一些数据:
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
# 随机生成1000个点,围绕在y=0.1x+0.3的直线周围
num_points = 1000
vectors_set = []
for i in range(num_points):
x1 = np.random.normal(0.0, 0.55)
# np.random.normal(mean,stdev,size)给出均值为mean,标准差为stdev的高斯随机数(场),当size赋值时,如:size=100,表示返回100个高斯随机数。
y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.03)
# 后面加的高斯分布为人为噪声
vectors_set.append([x1, y1])
# 生成一些样本
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]
plt.scatter(x_data, y_data, c='r')
plt.show()
# 构造1维的w矩阵,取值是随机初始化权重参数为[-1, 1]之间的随机数
w = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name='w')
# 构造1维的b矩阵,初始化为0
b = tf.Variable(tf.zeros([1]), name='b')
# 建立回归公式,经过计算得出估计值y
y = w * x_data +b
# 定义loss函数,估计值y和实际值y_data之间的均方误差作为损失
loss = tf.reduce_mean(tf.square(y - y_data), name='loss')
# 采用梯度下降法来优化参数,学习率为0.5
optimizer = tf.train.GradientDescentOptimizer(0.5)
# train相当于一个优化器,训练的过程就是最小化loss
train = optimizer.minimize(loss, name='train')
sess = tf.Session()
# 全局变量的初始化
init = tf.global_variables_initializer()
sess.run(init)
# 打印初始化的w和b
print('w = ', sess.run(w), 'b = ', sess.run(b), 'loss = ', sess.run(loss))
# 训练迭代20次
for step in range(20):
sess.run(train)
# 打印训练好的w和b
print('w = ', sess.run(w), 'b = ', sess.run(b), 'loss = ', sess.run(loss))
代码运行一下,下面这个图就是上面代码刚刚构造的数据点:
有了数据之后,接下来构造线性回归模型,去学习出来这个数据符合什么样的w和b,训练完后看下得到的w和b是不是接近构造数据时的w和b,最后一次结果是w = [ 0.10149562] b = [ 0.29976717] loss = 0.000948041
的,也就是这个线性回归模型学习到了数据的分布规则。也可以看出随着训练次数的迭代,loss值也越来越小,也就是模型越来越好,将训练出来的w和b构造成图中蓝色的线,这条线就是当前最能拟合数据的直线了。运行结果如图所示:
来源:https://blog.csdn.net/lwplwf/article/details/60334100


猜你喜欢
- 循环是我们经常用到的一个概念,比如,循环计算数字叠加、循环输出文字内容等。循环是运行重复内容的一个最简单的方法,简化了代码流程,增加了时效性
- 今天遇到下图这种问题,文字过长,显示不全。折腾了老半天,在网上搜了半天也找不到解决方案。于是问了下同事,同事提到了<optgroup&
- 请求钩子通过装饰器为一个模块添加请求钩子, 对当前模块的请求进行额外的处理. 比如权限验证.说白了,就是在执行视图函数前后你可以进行一些处理
- 用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的 SELECT语句,另外一种就是更新语句,也叫做数据操作语句。言外之 意
- 程序员的时间很宝贵,Python这门语言虽然足够简单、优雅,但并不是说你使用Python编程,效率就一定会高。要想节省时间、提高效率,还是需
- 自定义可迭代的类列表可以获取列表的长度,然后使用变量i对列表索引进行循环,也可以获取集合的所有元素,且容易理解。没错,使用列表的代码是容易理
- 谈到用户界面交互总少不了事件,前面一系列文章介绍的鼠标光标、坐标、弹出式提示框等实现的底层其实都是事件处理,只不过matplotlib或其他
- 之前一直傻傻分不清(n,1)和(n,)之间的区别,这里做一下总结,希望度过此文章的小伙伴都能明白。例如如果我们创建一个包含10个整型数的数组
- Oracle数据库作为大型数据库管理系统,近年来一直占有世界上高端数据库的最大份额,其强大而完善的数据库管理功能,以及ORACLE公司推陈出
- 使用jQuery的.post提交,并期望得到多个数据,Python后台要使用json格式。不指定datatype为json,让jquery自
- 环境:Windows 10 专业版pycharm pro 2020.3django 3.2.1xadmin 选django2的版本一,安装这
- 以前的Dreamweaver中是没有图片处理功能的,即使你要处理也只能使用CSS中的相关滤镜进行一些效
- 再写入数据库对时间进行加减操作时候django报告了错误TypeError: can't subtract offset-naive
- 导言在前面的教程里我们学习了DataList提供了一些风格样式的属性.而且我们还学习了如何定义HeadStyle, ItemStyle, A
- 这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- vm.$watch用法: vm.$watch( expOrFn, callback, [options] ) ,返回值为 unwatch 是
- 有如下格式的文本文件/“/请/!/”/“/请/!/”/两名/剑士/各自/倒转/剑尖/,/右手/握/剑柄/,/左手/搭于/右手/手背/,/躬身
- 通常情况下,定义函数时都会选择有参数的函数形式,函数参数的作用是传递数据给函数,令其对接收的数据做具体的操作处理。在使用函数时,经常会用到形
- 一、Golang环境安装及配置Go Modulehttps://go-zero.dev/cn/docs/prepare/golang-ins
- Mysql数据库常用命令:启动Mysql数据库C:》cd Mysql5.0 binC:Mysql5.0 bin》mysqld –instal