TensorFlow训练单特征和多特征的线性回归
生活随笔
收集整理的這篇文章主要介紹了
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 tfX = 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 tfX = 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內核設計剖析》
=========================
歡迎關注:
總結
以上是生活随笔為你收集整理的TensorFlow训练单特征和多特征的线性回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言提取图片yiq分量,图片数字水印C
- 下一篇: flutter获取Android照片地址