TensorFlow--线性回归问题初步
生活随笔
收集整理的這篇文章主要介紹了
TensorFlow--线性回归问题初步
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
主要學(xué)習(xí)了使用TensorFlow深度學(xué)習(xí)系統(tǒng)如何進(jìn)行訓(xùn)練數(shù)據(jù)以及預(yù)測(cè)數(shù)據(jù):
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import matplotlib.pyplot as plt import numpy as np import tensorflow as tf #導(dǎo)入對(duì)應(yīng)的第三方庫(kù) ''' 線性回歸實(shí)戰(zhàn):TensorFlow''' #設(shè)置隨機(jī)種子 np.random.seed(5)#直接采用np生成等差數(shù)列的方法,生成100個(gè)點(diǎn),每個(gè)點(diǎn)的取值在-1~1之間#第一步:準(zhǔn)備數(shù)據(jù) 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#畫(huà)出隨機(jī)生成數(shù)據(jù)的散點(diǎn)圖 plt.scatter(x_data,y_data) plt.show()#畫(huà)出我們想要學(xué)習(xí)到的線性函數(shù)y = 2x+1plt.plot(x_data,2 * x_data + 1.0, color = 'red',linewidth = 3)#顯示數(shù)據(jù)集的分布 #plt.show()#第二步:構(gòu)建模型#定義訓(xùn)練數(shù)據(jù)的占位符,x是特征值,y是標(biāo)簽值 x = tf.placeholder("float",name = "x") y = tf.placeholder("float",name = "y")#定義模型函數(shù) w和b是模型真正的參數(shù) def model(x,w,b):return tf.multiply(x,w) + b #返回wx +b#定義模型機(jī)構(gòu) TensorFlow的變量用來(lái)更新參數(shù) ''' TensorFlow變量的聲明函數(shù)是tf.Variable tf.Variable的作用是保存和更新參數(shù) 變量的初始值可以是隨機(jī)數(shù)、常數(shù),或是通過(guò)其他變量的初始值計(jì)算得到 '''#構(gòu)建線性函數(shù)的斜率,變量w w = tf.Variable(1.0,name="w0")#構(gòu)建線性函數(shù)的截距,變量b b = tf.Variable(0.0,name="b0")#pred是預(yù)測(cè)值,前向計(jì)算 pred = model(x,w,b)#第三步:訓(xùn)練模型 #設(shè)置訓(xùn)練參數(shù)#迭代次數(shù) train_epochs = 10#學(xué)習(xí)率 learning_rate = 0.05#定義損失函數(shù) #采用均方差作為損失函數(shù) loss_function = tf.reduce_mean(tf.square(y-pred))#選擇迭代器 #梯度下降優(yōu)化器 optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)#聲明會(huì)話 sess = tf.Session()#變量初始化 init = tf.global_variables_initializer() sess.run(init)#執(zhí)行訓(xùn)練 #開(kāi)始訓(xùn)練,輪數(shù)為epoch,采用SGD隨機(jī)梯度下降優(yōu)化方法 for epoch in range(train_epochs):for xs,ys in zip(x_data,y_data): #訓(xùn)練100次_,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)#畫(huà)圖 plt.show()print("w:",sess.run(w))#w的值應(yīng)該在2附近 print("b:",sess.run(b))#w的值應(yīng)該在1附近#第四步:進(jìn)行預(yù)測(cè) 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) #通過(guò)參數(shù)loc指定圖例位置 plt.show()x_test = 3.21predict = sess.run(pred,feed_dict={x:x_test}) print("預(yù)測(cè)值:%f" % predict)target = 2 * x_test + 1.0 print("目標(biāo)值:%f" % target)?
輸出結(jié)果:
?
這個(gè)階段:需要自己進(jìn)行消化,多敲幾遍這個(gè)代碼,理解整個(gè)過(guò)程,為后期的學(xué)習(xí)打好堅(jiān)實(shí)的基礎(chǔ)。
轉(zhuǎn)載于:https://my.oschina.net/u/3183716/blog/2995466
總結(jié)
以上是生活随笔為你收集整理的TensorFlow--线性回归问题初步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: centos 7安装
- 下一篇: 一个时代的终结:为什么是时候放弃ITOM