主要學習了使用TensorFlow深度學習系統如何進行訓練數據以及預測數據:session
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import matplotlib.pyplot as plt import numpy as np 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 #畫出隨機生成數據的散點圖 plt.scatter(x_data,y_data) plt.show() #畫出咱們想要學習到的線性函數y = 2x+1 plt.plot(x_data,2 * x_data + 1.0, color = 'red',linewidth = 3) #顯示數據集的分佈 #plt.show() #第二步:構建模型 #定義訓練數據的佔位符,x是特徵值,y是標籤值 x = tf.placeholder("float",name = "x") y = tf.placeholder("float",name = "y") #定義模型函數 w和b是模型真正的參數 def model(x,w,b): return tf.multiply(x,w) + b #返回wx +b #定義模型機構 TensorFlow的變量用來更新參數 ''' 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 = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #聲明會話 sess = tf.Session() #變量初始化 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): #訓練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)#畫圖 plt.show() print("w:",sess.run(w))#w的值應該在2附近 print("b:",sess.run(b))#w的值應該在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指定圖例位置 plt.show() 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)
輸出結果:dom
這個階段:須要本身進行消化,多敲幾遍這個代碼,理解整個過程,爲後期的學習打好堅實的基礎。函數