上篇(看這邊)我們已提出一個簡單的模型,並"手動"找到最佳值(當然是用"猜"的方式),這當然不是正常程序,所以接下來利用Tensorflow提供的optimizer(優化演算法)慢慢變化W及b值得到最佳化的model(得到最小的loss)。先複習一下先前有初始值W與b完整的code。
接下來手動改變W與b的值計算loss函數至最小值(tf.assign)完成優化(loss = 0)。
最簡單的optimizer之一為梯度下降法(gradient descent), 簡單來說就是找損失函數微分(梯度)最低值的地方,通常就是最佳化的地方了。Tensorflow厲害之處就是這些函數都準備好啦,只要輸入optimizer = tf.train.GradientDescentOptimizer(learning rate) 呼叫函式(learning rate就是學習率,簡單來說就是更新一次參數要變化梯度的多少比率,太大太小都不好),再定義進行的方式train = optimizer.minimize(loss)就行啦,最後看看要重複執行幾次,就可以得到最後的W及b值。結果還是用"猜"的最準 :),不過畢竟只是例子,沒有每天過年的啦!!!。
當然只看結果沒有學習的感覺,可以多加幾行看看W及b值的變化。
從結果看其實大約400至500次就有0.99的準確率了。
完整程式如下(有點小變動):
參考資料
Getting Started with TensorFlow
沒有留言:
張貼留言