我想通過玩弄線性迴歸算法來熟悉TensorFlow,並使用源自此處的源代碼https://web.stanford.edu/class/cs20si/syllabus.html,文件名爲03_linear_regression_sol.py
。使用tf.Variable()和tf.get_variable()時的不同結果
定義的模型是Y_predicted = X * w + b
,其中
w
和b
是參數Y_predicted
和X
正在訓練數據
對於w
和b
,在示例代碼它們被定義爲以下
w = tf.Variable(0.0, name='weights')
b = tf.Variable(0.0, name='bias')
我改變了這兩行代碼有點如下
w = tf.get_variable('weights', [], dtype=tf.float32)
b = tf.get_variable('bias', [], dtype=tf.float32)
然而,total_loss/n_samples
爲完成訓練階段後,這兩個版本是不同的。更具體地說,就原始版本而言,我隨時獲得確定性結果1539.0050282141283
。但是,作爲修改後的版本,我得到了不同的運行時間undeterministic的結果,例如,total_loss/n_samples
可能是1531.3039793868859
,1526.3752814714044
,...等
我的問題是
- 的是什麼錯我的代碼,修改後的版本?
- 如果不是,爲什麼?
在執行階段,我已經爲這兩個版本準備了一行代碼'sess.run(tf.global_variables_initializer())'。我認爲這一行承擔了初始化變量的責任,不是嗎?無論如何,在爲變量添加初始化程序後,'w = tf.get_variable('weights',[],dtype = tf.float32,initializer = tf.zeros_initializer)'和'b = tf.get_variable('bias',[]] ,dtype = tf.float32,initializer = tf.zeros_initializer) ',我得到了確定性的值!大! –
是的,這一行 - 'sess.run(tf.global_variables_initializer())' - 爲所有變量運行初始值設定項。結果歸結爲這些初始化程序是恆定的還是隨機的。 – Maxim