# _*_ 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 前面加了個 *,表示可變引數,可傳入 0個或多個引數,很常用
plt.figure()
plt.scatter(trx,try) #散點圖
plt.plot(trx, .2 + 2 * trx) #畫直線
# 首先建立乙個變數來儲存x 和y的數值
x = tf.placeholder("float", name="x") # create symbolic variables
y = tf.placeholder("float", name = "y")
# 首先,我們為模型宣告乙個 name_scope,於是便可以將這個scope的變數和操作視為乙個同質實體
# 在這個 scope 中,我們先定義乙個線性方程,用 x 乘以權重(斜率)加上偏差
# 然後定義乙個存放權重(斜率)和偏差的共享變數。這些變數在迭代計算過程中不斷的發生比變化,
# 最後將定義的 model 的返回值賦給 y_model
with tf.name_scope("model"):
def model(x, w, b):
return tf.multiply(x, w) + b # we just define the line as x*w + b0
w = tf.variable(-1.0, name="b0") # create a shared variable
b = tf.variable(-2.0, name="b1") # create a shared variable
y_model = model(x, w, b)
# 在損失函式(cost function)中,同樣先建立乙個(scope)來包含所有的操作
# 同樣 y 在前面也已經建立符號變數,使用之前建立的 y_model 來計算 y軸值,使用均方誤差(sqr error)
with tf.name_scope("costfunction"):
cost = (tf.pow(y-y_model, 2)) # use sqr error for cost function
# 定義乙個 optimizer,這裡採用的優化方法是梯度下降,步長設為0.05 為經驗值
train_op = tf.train.gradientdescentoptimizer(0.05).minimize(cost)
# 建立乙個會話,並將初始化的變數儲存起來,便於tensorboard中檢視本例中我們將每次迭代後的最後乙個誤差結果作為乙個標量儲存起來。
# 同理,我們也需要將 tensorflow 生成的圖結構奧存起來用於之後檢視
sess = tf.session()
init = tf.initialize_all_variables()
tf.train.write_graph(sess.graph, '/home/ubuntu/linear','graph.pbtxt')
cost_op = tf.summary.scalar("loss", cost)
merged = tf.summary.merge_all()
sess.run(init)
writer = tf.summary.filewriter('/home/ubuntu/linear', sess.graph)
# 在模型訓練階段,設定迭代 100 次,每次我們通過將樣本輸入模型,進行梯度下降。
# 迭代之後,繪製出模型曲線,並將誤差存入 summary
for i in range(100):
for (x, y) in zip(trx, try):
sess.run(train_op, feed_dict=)
summary_str = sess.run(cost_op, feed_dict=)
writer.add_summary(summary_str, i)
b0temp=b.eval(session=sess)
b1temp=w.eval(session=sess)
plt.plot (trx, b0temp + b1temp * trx )
print(sess.run(w)) # should be around 2
print(sess.run(b)) #should be around 0.2
plt.scatter(trx,try)
plt.plot (trx, sess.run(b) + trx * sess.run(w))
plt.show()
輸出結果:
也可以在tensorboard中檢視資料結果。
tensorboard的啟用,需要指定日誌目錄,執行以下命令:
tensorboard --logdir=.(路徑)
tensorboard會載入日誌目錄中的事件和圖形檔案,並監聽6006口。你可以在瀏覽器中輸入「localhost:6006」,然後就能在瀏覽器中看到類似tensorboard的儀錶盤。
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...
Tensorflow之單變數線性回歸問題的解決方法
跟著網易雲課堂上面的免費公開課深度學習應用開發tensorflow實踐學習,學到線性回歸這裡感覺有很多需要總結,梳理記錄下階段性學習內容。題目 通過生 工資料集合,基於tensorflow實現y 2 x 1線性回歸 使用tensorflow進行演算法設計與訓練的核心步驟 1 準備資料 2 構建模型 ...
Tensorflow實戰 張量
import tensorflow as tf tf.constant 是乙個計算,這個計算的結果為乙個張量,儲存在變數a中。a tf.constant 1.0,2.0 name a b tf.constant 2.0,3.0 name b result tf.add a,b,name add pr...