2017-08-31 147 views
1

我想在使用Tensorflow訓練我的模型時修改張量的值。在使用Tensorflow進行訓練時修改張量的值

這是張張量的一個在我的模型

weight = tf.Variable(np_matrix) 

一些迭代後,weight值將自動更新。

我的問題是:如何非自動修改weight的值。我已經嘗試過這種方法,但沒有奏效。

modify_weight = sess.run([weight], feed_dict = feed_dict) 
modify_weight[0] = [0, 0] 
weight = tf.Variable(modify_weight) 

這部分代碼在tf.Session()部分(因爲我想在訓練時間修改數值。)

謝謝!

回答

2

和其他所有一樣,作業也是一種操作,我們必須創建一個圖形,並使用tf.assign並在會話中運行它。

所以你創建的操作是這樣的:

assign = tf.assign(weight, value) 

其中valuenumpy陣列的weight相同的形狀(或tf.Placeholder可以與進料字典修改)然後運行該曲線圖在會話:

sess.run(assign) 

tf.Variable的也有一個方法assign,從而可以直接創建的操作從可變起始:

assign = weight.assign(value) 

而不是在會話中運行它。

+0

真的很感謝你!我使用'assign = weight.assign(value)''sess.run(assign)'。但如果我不使用'new_weight = sess.run([weight],feed_dict = feed_dict)',它仍然不能修改權重值。但現在它可以工作,謝謝! – JourneyWoo