TensorFlow训练单特征和多特征的线性回归

线性回归

线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题。相关知识可看“相关阅读”。

主要思想

在TensorFlow中进行线性回归处理重点是将样本和样本特征矩阵化。

单特征线性回归

单特征回归模型为:y=wx+b

构建模型

X = tf.placeholder(tf.float32, [None, 1])
w = tf.Variable(tf.zeros([1, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(X, w) + b
Y = tf.placeholder(tf.float32, [None, 1])

构建成本函数

cost = tf.reduce_mean(tf.square(Y-y))

梯度下降最小化成本函数,梯度下降步长为0.01

train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

完整代码,迭代次数为10000

import tensorflow as tf

X = tf.placeholder(tf.float32, [None, 1])
w = tf.Variable(tf.zeros([1, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(X, w) + b
Y = tf.placeholder(tf.float32, [None, 1])

# 成本函数 sum(sqr(y_-y))/n
cost = tf.reduce_mean(tf.square(Y-y))

# 用梯度下降训练
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

x_train = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]]
y_train = [[10],[11.5],[12],[13],[14.5],[15.5],[16.8],[17.3],[18],[18.7]]

for i in range(10000):
    sess.run(train_step, feed_dict={X: x_train, Y: y_train})
print("w:%f" % sess.run(w))
print("b:%f" % sess.run(b))

多特征线性回归

多特征回归模型为:y=(w1x1+w2x2+...+wnxn)+b,写为y=wx+b。

y为m行1列矩阵,x为m行n列矩阵,w为n行1列矩阵。TensorFlow中用如下来表示模型。

构建模型

X = tf.placeholder(tf.float32, [None, n])
w = tf.Variable(tf.zeros([n, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(X, w) + b
Y = tf.placeholder(tf.float32, [None, 1])

构建成本函数

cost = tf.reduce_mean(tf.square(Y-y))

梯度下降最小化成本函数,梯度下降步长为0.01

train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

完整代码,迭代次数为10000

import tensorflow as tf

X = tf.placeholder(tf.float32, [None, 2])
w = tf.Variable(tf.zeros([2, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(X, w) + b
Y = tf.placeholder(tf.float32, [None, 1])

# 成本函数 sum(sqr(y_-y))/n
cost = tf.reduce_mean(tf.square(Y-y))

# 用梯度下降训练
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

x_train = [[1, 2], [2, 1], [2, 3], [3, 5], [1, 3], [4, 2], [7, 3], [4, 5], [11, 3], [8, 7]]
y_train = [[7], [8], [10], [14], [8], [13], [20], [16], [28], [26]]

for i in range(10000):
    sess.run(train_step, feed_dict={X: x_train, Y: y_train})
print("w0:%f" % sess.run(w[0]))
print("w1:%f" % sess.run(w[1]))
print("b:%f" % sess.run(b))

总结

在线性回归中,TensorFlow可以很方便地利用矩阵进行多特征的样本训练。

相关阅读



========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================
欢迎关注:

时间: 2024-10-31 12:39:04

TensorFlow训练单特征和多特征的线性回归的相关文章

利用TFRecord和HDFS准备TensorFlow训练数据

本系列将利用阿里云容器服务的机器学习解决方案,帮助您了解和掌握TensorFlow,MXNet等深度学习库,开启您的深度学习之旅. 第一篇: 打造深度学习的云端实验室 第二篇: GPU资源的监控和报警,支撑高效深度学习的利器 第三篇: 利用TFRecord和HDFS准备TensorFlow训练数据 数据准备和预处理是一个深度学习训练过程中扮演着非常重要的角色,它影响着模型训练的速度和质量. 而TensorFlow对于HDFS的支持,将大数据与深度学习相集成,完善了从数据准备到模型训练的完整链条.

利用Docker和阿里云容器服务轻松搭建分布式TensorFlow训练集群(上)

本系列将利用Docker技术在阿里云HPC和容器服务上,帮助您上手TensorFlow的机器学习方案 第一篇:打造TensorFlow的实验环境 第二篇:轻松搭建TensorFlow Serving集群 第三篇:打通TensorFlow持续训练链路 第四篇:利用Neural Style的TensorFlow实现,像梵高一样作画 第五篇:轻松搭建分布式TensorFlow训练集群(上) 本文是该系列中的第五篇文章, 将为您介绍如何在本机以及HPC和阿里云容器服务上快速部署和使用分布式TensorF

深度学习小技巧(一):如何保存和恢复TensorFlow训练的模型

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 深度学习小技巧(二):如何保存和恢复scikit-learn训练的模型 如果深层神经网络模型的复杂度非常高的话,那么训练它可能需要相当长的一段时间,当然这也取决于你拥有的数据量,运行模型的硬件等等.在大多数情况下,你需要通过保存文件来保障你试验的稳定性,防止如果中断(或一个错误),你能够继续从没有错误的地方开始. 更重要的是,对于任何深度学习的框架,像TensorFlow,在成功的训练之后,你需要重新使用模型

TensorFlow训练Logistic回归

Logistic回归 在用线性模型进行回归训练时,有时需要根据这个线性模型进行分类,则要找到一个单调可微的用于分类的函数将线性回归模型的预测值关联起来.这时就要用到逻辑回归,之前看吴军博士的<数学之美>中说腾讯和谷歌广告都有使用logistics回归算法. 如下图,可以清晰看到线性回归和逻辑回归的关系,一个线性方程被逻辑方程归一化后就成了逻辑回归.. Logistic模型 对于二分类,输出y∈{0,1},假如线性回归模型为z=θTx,则要将z转成y,即y=g(z).于是最直接的方式是用单位阶跃

如何用TensorFlow训练聊天机器人(附github)

前言 实际工程中很少有直接用深度学习实现端对端的聊天机器人,但这里我们来看看怎么用深度学习的seq2seq模型来实现一个简易的聊天机器人.这篇文章将尝试使用TensorFlow来训练一个基于seq2seq的聊天机器人,实现根据语料库的训练让机器人回答问题. seq2seq 关于seq2seq的机制原理可看之前的文章<深度学习的seq2seq模型>. 循环神经网络 在seq2seq模型中会使用到循环神经网络,目前流行的几种循环神经网络包括RNN.LSTM和GRU.这三种循环神经网络的机制原理可看

OpenCV教程(47) sift特征和surf特征

     在前面三篇教程中的几种角检测方法,比如harris角检测,都是旋转无关的,即使我们转动图像,依然能检测出角的位置,但是图像缩放后,harris角检测可能会失效,比如下面的图像,图像放大之前可以检测出为harris角,但是图像放大后,则变成了边,不能检测出角了.所以,harris角是缩放相关的.      在paper Distinctive Image Features from Scale-Invariant Keypoints中,D.Lowe提出了SIFT算法,该算法是缩 放无关的

我的2017年文章汇总——深度学习篇

2017快过完了,大家过去一年收获如何?不管怎样,保持好心态,未来不迎,当下不杂,既过不恋. 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:"分布式"."机器学习"."深度学习"."NLP"."Java深度"."Java并发核心"."JDK源码"."Tomcat内核". 本篇推送深度学习相关文章. LSTM神经网络 GRU神经网络 循环

谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)

  本文转自:http://mp.weixin.qq.com/s/Xe3g2OSkE3BpIC2wdt5J-A   谷歌大规模机器学习:模型训练.特征工程和算法选择 (32PPT下载) 2017-01-26 新智元 1新智元编译    来源:ThingsExpo.Medium 作者:Natalia Ponomareva.Gokula Krishnan Santhanam 整理&编译:刘小芹.李静怡.胡祥杰 新智元日前宣布,获6家顶级机构总额达数千万元的PreA轮融资,蓝驰创投领投,红杉资本中国基

Kaggle HousePrice : LB 0.11666(前15%), 用搭积木的方式(2.实践-特征工程部分)

Kaggle HousePrice : LB 0.11666(前15%), 用搭积木的方式(2.实践-特征工程部分) 王勇 14 天前 关键词: 机器学习,Kaggle 比赛,特征工程,pandas Pipe, sklearn Pipeline,刷法大法, 自动化 从上篇文章发布到我这篇文章,一共收到了78个赞.谢谢各位看官捧场. 本文正文部分阅读预计要花30分钟左右.假定读者已经对Kaggle, Python, Pandas,统计有一定了解.后面附相关代码,阅读需要时间因人而异. 这两天在忙着