跟著網易雲課堂上面的免費公開課深度學習應用開發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=)
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=)
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=)
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實戰 單變數線性回歸
encoding utf 8 import matplotlib.pyplot as plt import tensorflow as tf import numpy as np trx np.linspace 1,1,101 在1和1之間建立乙個101點的線性空間 注意 在元組 trx.shape...
tensorflow 綜合學習系列例項之線性回歸
tf是現在比較流行的深度學習框架之一,從今天開始我會把tf由簡入深到進行講解,不對的地方還請大家諒解,因為tf的版本現在更新的速度很快,不同的版本對應的api也是有所區別的,所以需要找到對應的版本,後面我所講解的例項都是基於1.2版本 在使用tf的一般正常幾個核心步驟如下 1 首先定義引數,一般使用...
Tensor flow小案例 01單變數線性回歸
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt 源資料 從1到10,分為100等分 data x np.linspace 1,10,100 噪音,使資料更加真實,均值為0,標準差為1.5 noise...