概述
实验1 tensorflow 实现线性回归
说在前面
本实验使用tensorflow来实现一元线性回归。
背景:拿到手上有一堆数据,想要建立一元线性函数
y = wx+b来拟合这些数据
思想:建立的一元线性函数被w,b唯一确定,任务就是找到这两个参数。随机初始化w,b;建立损失函数来评估w,b的好坏;采用梯度下降法更新w,b的取值;
实验步骤
- 生成带噪声的数据,原数据服从sin函数分布
- 定义输入输出、变量(权重与偏置)、损失函数、优化器
- 开始训练
- 输出最终结果、可视化
主要API
API | 功能 |
---|---|
tf.placeholder() | 定义输入输出的容器 |
tf.Variable() | 定义变量 |
tf.train.GradientDescentOptimizer().minimize() | 梯度下降 |
tf.global_variables_initializer() | 初始化变量 |
tf.Session() | 创建执行环境 |
sess.run() | 执行喂入的节点 |
具体代码
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (14, 8)
# 1.生成带噪声的数据
n = 100
xs = np.linspace(-3,3,n)
ys = np.sin(xs) + np.random.uniform(-0.5,0.5,n)
plt.scatter(xs,ys,s=100,marker='x')
# 2. 定义投入训练数据的容器
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
# 4. 定义变量
W = tf.Variable(tf.random_normal([1]))# 定义初始化的参数服从的随机分布,变量的形状
b = tf.Variable(tf.random_normal([1]))
# 3. 定义损失函数
Y_pred = tf.add(tf.multiply(X,W),b)
loss = tf.square(Y - Y_pred)
# 4. 定义优化器
learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)# 定义优化方法:梯度下降,设置参数步长,定义最小化的loss
# 4. 开始优化过程
nsamples = len(xs)
with tf.Session() as sess: # 生成sess类型,用于优化
init = tf.global_variables_initializer() # 初始化网络中的变量
sess.run(init)
for i in range(50): # 定义epochs
total_loss = 0
for x, y in zip(xs,ys): # 将定义好的数据集一个一个传入
_, l = sess.run([optimizer,loss], feed_dict={X:x,Y:y}) # run会执行传入的节点以及节点的依赖节点, feeddict负责喂入placeholder的参数
total_loss += l
if i % 5 == 0:
print('Epoch:{}, loss{}'.format(i, total_loss / nsamples)) # 指定轮次输出损失函数
w,b = sess.run([W,b]) # 为打印变量也需要run变量
print('weight: {}, bais: {}'.format(w,b))
# 5. 可视化
plt.scatter(xs,ys,s=100,marker='x',label='data')
plt.plot(xs,w * xs + b,color='red',label='linearModel')
plt.legend()
实验结果
最后
以上就是痴情乐曲为你收集整理的实验1:tensorflow 实现线性回归实验1 tensorflow 实现线性回归的全部内容,希望文章能够帮你解决实验1:tensorflow 实现线性回归实验1 tensorflow 实现线性回归所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复