跟着网易云课堂上面的免费公开课深度学习应用开发Tensorflow实践学习,学到线性回归这里感觉有很多需要总结,梳理记录下阶段性学习内容。

题目:通过生成人工数据集合,基于TensorFlow实现y=2*x+1线性回归

使用Tensorflow进行算法设计与训练的核心步骤

(1)准备数据

(2)构建模型

(3)训练模型

(4)进行预测

#线性回归问题

#******************一、准备数据:**********************

#生成人工数据集

# 在Jupter中,使用matplotlib显示图像需要设置为inline模式,否则不会显示图像
%matplotlib inline import matplotlib.pyplot as plt #载入matplotlib,用于绘图
import numpy as np #载入numpy,numpy是Python进行科学计算时的基础模块
import tensorflow as tf #载入Tensorflow #设置随机种子。训练之后结果随机,随机种子起到固定初始值的作用,为了训练之后得到一样的结果
np.random.seed(5)
#直接采用np生成等差数列的方法,生成100个点,每个点的取值在-1~1之间
x_data = np.linspace(-1,1,100) # y = 2x +1 + 噪声,其中,噪声的维度与x_data一致
y_data = 2 * x_data + 1.0 + np.random.randn(*x_data.shape) * 0.4 #***********************二、构建线性模型************************* #定义训练数据的占位符,x是特征,y是标签值
x = tf.placeholder("float",name= "x")
y = tf.placeholder("float",name = "y") #定义模型函数
def model(x,w,b):
return tf.multiply(x,w) + b #定义模型结构
#Tensorflow变量的声明函数是tf.Variable。tf.Variable的作用是保存和更新函数,变量的初始值可以是随机数、常数,或是通过其他变量的初始值计算得到
#构建线性函数的斜率,变量w
w = tf.Variable(1.0,name = "w0")
#构建线性函数的截距,变量b
b = tf.Variable(0.0,name = "b0") #pred是预测值,前向计算
pred = model(x,w,b) #************************三、训练模型*******************************
#设置训练参数
#迭代次数(训练轮数)
train_epochs = 10 #学习率
learning_rate = 0.05 #定义优化器、最小损失函数 #定义损失函数,损失函数用于描述预测值与真实值之间的差别,从而指导模型收敛方向。常见损失函数:均方差、交叉熵
#采用均方差作为损失函数
loss_function = tf.reduce_mean(tf.square(y-pred)) #定义优化器
#定义优化器Optimizer,初始化一个GradientDescentOptimizer(梯度下降优化器)
#设置学习率和优化目标:最小化损失
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #创建会话
#声明会话
sess = tf.Session()
#变量初始化
#在真正执行计算前,需要将所有变量初始化。通过tf.global_variables_initializer函数可实现对所有变量的初始化
init = tf.global_variables_initializer()
sess.run(init) #迭代训练
#模型训练阶段,设置迭代轮次,每次通过将样本逐个输入模型,进行梯度下降优化操作。每轮迭代后,绘制出模型曲线
#开始训练,轮次为epoch,采用SGD随机梯度下降优化方法
for epoch in range(train_epochs):
for xs,ys in zip(x_data,y_data):
_,loss = sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys})
b0temp = b.eval(session=sess)
w0temp = w.eval(session=sess)
plt.plot(x_data,w0temp * x_data + b0temp) #画图 #结果查看。当训练完成后,打印查看参数。数据每次运行都可能会有所不同
print("w:",sess.run(w)) #w的值应该在2附近
print("b:",sess.run(b)) #b的值应该在1附近 #结果可视化
plt.scatter(x_data,y_data,label='Original data')
plt.plot(x_data,x_data*sess.run(w) + sess.run(b),label='Fitted line',color='r',linewidth=3)
plt.legend(loc=2) #通过参数loc指定图例位置 #*********************四、利用学习到的模型进行预测******************* x_test = 3.21 predict = sess.run(pred,feed_dict={x:x_test})
print("预测值: %f"%predict) target = 2 * x_test + 1.0
print("目标值: %f"%target)

  题目二:通过生成人工数据集合,基于TensorFlow实现y=3.1234*x+2.98线性回归

# 在Jupter中,使用matplotlib显示图像需要设置为inline模式,否则不会显示图像
%matplotlib inline import matplotlib.pyplot as plt #载入matplotlib
import numpy as np #载入numpy
import tensorflow as tf #载入Tensorflow #设置随机种子
np.random.seed(5)
#直接采用np生成等差数列的方法,生成100个点,每个点的取值在-1~1之间
x_data = np.linspace(-1,1,100)
# y = 3.1234x +2.98 + 噪声, 其中, 噪声的唯度与x_data一致
y_data = 3.1234*x_data + 2.98 + np.random.randn(*x_data.shape)*0.4
x = tf.placeholder("float",name = "x")
y = tf.placeholder("float",name = "y") def model(x,w,b):
return tf.multiply(x,w)+b
# 构建线性函数的斜率, 变量w
w = tf.Variable(1.0,name="w")
# 构建线性函数的截距,变量b
b = tf.Variable(0.0, name="b0")
#pred是预测值,前向计算
pred = model(x,w,b) # 迭代次数(训练轮数)
train_epochs = 10
# 学习率
learning_rate = 0.05
# 采用均方差作为损失函数
loss_function = tf.reduce_mean(tf.square(y-pred))
# 梯度下降优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init) # 开始训练,轮数为 epoch,采用SGD随机梯度下降优化方法
#zip为组装,x,y都为一维数组. zip 把x,y组装起来也为一维数组,每个单元为(x,y) for epoch in range(train_epochs):
for xs,ys in zip(x_data, y_data):
#优化器给了一个下划线,loss_function 给了loss
_, loss=sess.run([optimizer,loss_function],feed_dict={x: xs, y:ys}) plt.scatter(x_data,y_data,label='Original data')
plt.plot(x_data,x_data*sess.run(w)+sess.run(b),\
label='Fitted line',color='r',linewidth=3)
plt.legend(loc=2)#通过参数loc指定图例位置 print("w: ", sess.run(w)) #w的值应该在3.1234附近
print("b: ",sess.run(b)) #b的值应该在2.98附近

Tensorflow之单变量线性回归问题的解决方法的更多相关文章

  1. 机器学习之单变量线性回归(Linear Regression with One Variable)

    1. 模型表达(Model Representation) 我们的第一个学习算法是线性回归算法,让我们通过一个例子来开始.这个例子用来预测住房价格,我们使用一个数据集,该数据集包含俄勒冈州波特兰市的住 ...

  2. Coursera《machine learning》--(2)单变量线性回归(Linear Regression with One Variable)

    本笔记为Coursera在线课程<Machine Learning>中的单变量线性回归章节的笔记. 2.1 模型表示 参考视频: 2 - 1 - Model Representation ...

  3. Ng第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 2.4  梯度下降 2.5  梯度下 ...

  4. 斯坦福第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 I 2.4  代价函数的直观理解 I ...

  5. 机器学习(二)--------单变量线性回归(Linear Regression with One Variable)

    面积与房价 训练集 (Training Set) Size       Price 2104       460 852         178 ...... m代表训练集中实例的数量x代表输入变量 ...

  6. python 单变量线性回归

      单变量线性回归(Linear Regression with One Variable)¶ In [54]: #初始化工作 import random import numpy as np imp ...

  7. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 2_Linear regression with one variable 单变量线性回归

    Lecture2   Linear regression with one variable  单变量线性回归 2.1 模型表示 Model Representation 2.1.1  线性回归 Li ...

  8. 机器学习 (一) 单变量线性回归 Linear Regression with One Variable

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...

  9. 【Python】机器学习之单变量线性回归 利用正规方程找到合适的参数值

    [Python]机器学习之单变量线性回归 利用正规方程找到合适的参数值 本次作业来自吴恩达机器学习. 你是一个餐厅的老板,你想在其他城市开分店,所以你得到了一些数据(数据在本文最下方),数据中包括不同 ...

随机推荐

  1. Linux-3.14.12内存管理笔记【伙伴管理算法(2)】

    前面已经分析了linux内存管理算法(伙伴管理算法)的准备工作. 具体的算法初始化则回到start_kernel()函数接着往下走,下一个函数是mm_init(): [file:/init/main. ...

  2. Fiddler应用——使用Fiddler修改指定request/response报文

    Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,分析数据,设置断点,修改请求/响应数据,查看所有的“进出”Fiddler的数据(指cookie,h ...

  3. 【转】Cookie和Session和Cache

    1 Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. Session可以用Cookie来实 ...

  4. windows下配置ngnix服务器经常出现503问题解决办法

    自己网站在windows server2008下安装的ngnix,然后配置php,网站访问流量并不大,但是经常出现503问题.经过查看ngnix服务器错误日志,发现: (10061: No conne ...

  5. Java Web 学习(8) —— Spring MVC 之文件上传与下载

    Spring MVC 之文件上传与下载 上传文件 表单: <form action="upload" enctype="multipart/form-data&qu ...

  6. Idea的Http测试支持(十二)

    1. 在Tools > HTTP Client > Test RESTful Web Service 打开窗口 窗口信息如下: 2. 在Host里面填写接口请求的服务器ip地址和端口,pa ...

  7. python调用C++ DLL 传参技巧

    结构体传参:http://www.jb51.net/article/52513.htm 准备工作: C++文件(cpp):(注意在函数声明上加上extern "C" 的修饰) #i ...

  8. Linux 学习记录三(Vim 文书编辑器).

       所有的Unix Like系统都会内建vi文书编辑器,其他的文书编辑器不一定存在,vim是vi的升级版,具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计.vim 里面加入了很 ...

  9. ubuntu 18.04 安装mysql 遇到语言格式不兼容性问题解决

    安装mysql的时候,遇到了这样一个错误:perl: warning: Setting locale failed. perl: warning: Please check that your loc ...

  10. Docker - 创建镜像(二)

    实际工作中,我们可能需要自己去创建一个docker镜像,下面给大家介绍如何创建docker镜像 1. 创建一个最简单的镜像 准备Dockerfile文件 [root@dockhost ~]# mkdi ...