03_linear_regression_sol.py
第三課示例代碼筆記
目標
這是一個線性回歸的例子,通過輸入火災數(shù)量X與盜竊數(shù)量Y的數(shù)據(jù),用X預測Y。通過這個簡單的例子可以窺見TF的數(shù)據(jù)結構,所以在這里記錄一下。
代碼分析
先忽略預處理輸入數(shù)據(jù)的步驟不管。
輸入數(shù)據(jù)用placeholder初始化先占位。設name,之后生成graph對應的名字是' '內(nèi)的內(nèi)容。
X = tf.placeholder(tf.float32, name='X')
Y = tf.placeholder(tf.float32, name='Y')
網(wǎng)絡內(nèi)部的參數(shù)用Variable聲明,variable是optimizer可以優(yōu)化的一類數(shù)據(jù)。設name,之后生成graph對應的名字是' '內(nèi)的內(nèi)容。
w = tf.Variable(0.0, name='weights')
b = tf.Variable(0.0, name='bias
編輯預測模型的公式
Y_predicted = X * w + b
編輯計算loss的公式
loss = tf.square(Y - Y_predicted, name='loss')
初始化優(yōu)化功能,做梯度下降。
其實到這一步已經(jīng)把預測模型和loss計算統(tǒng)統(tǒng)打包了。
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001).minimize(loss)
開始正式計算
with tf.Session() as sess:
#初始化之前的所有variable(w與b)
sess.run(tf.global_variables_initializer())
#寫入tensorboard的graph文件
writer = tf.summary.FileWriter('./graphs/linear_reg', sess.graph)
for i in range(50): # 訓練50次
total_loss = 0
for x, y in data:
# 正式開始optimizer運算并獲取loss數(shù)值
#從feed_dict輸入數(shù)據(jù)
_, l = sess.run([optimizer, loss], feed_dict={X: x, Y:y})
total_loss += l
print('Epoch {0}: {1}'.format(i, total_loss/n_samples))
Tensorboard輸出的graph
可以在圖中找出這兩個公式
Y_predicted=X*w+b
loss=(Y-Y_predicted)2

1.png