斯坦福大學TensorFlow課程筆記cs20si:#3(1)

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
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容