2016-10-29 5 views
7

मैं इस Manipulating matrix elements in tensorflow का पालन कर रहा हूं। tf.scatter_update का उपयोग कर। लेकिन मेरी समस्या यह है: क्या होता है यदि मेरा टीएफ। वैरिएबल 2 डी है? मान लीजिए:दो आयामी tf में tf.scatter_update का उपयोग करें। VARable

a = tf.Variable(initial_value=[[0, 0, 0, 0],[0, 0, 0, 0]]) 

कैसे मैं उदाहरण के लिए प्रत्येक पंक्ति के पहले तत्व अद्यतन कर सकते हैं और करने के लिए आवंटित है कि मान 1?

मैं की तरह

for line in range(2): 
    sess.run(tf.scatter_update(a[line],[0],[1])) 

कुछ करने की कोशिश की लेकिन यह विफल रहता है (मैं उम्मीद कर रहा था कि) और मुझे त्रुटि देता है:

TypeError: Input 'ref' of 'ScatterUpdate' Op requires l-value input

मैं समस्याओं उस तरह कैसे तय कर सकते हैं?

`

उत्तर

5

tensorflow आप एक टेन्सर अद्यतन नहीं कर सकते, लेकिन आप एक चर को अपडेट कर सकते हैं।

scatter_update ऑपरेटर केवल चर के पहले आयाम को अपडेट कर सकता है। आपको a[line] के बजाय स्कैटर अपडेट (a) पर हमेशा एक संदर्भ टेंसर पास करना होगा।

import tensorflow as tf 

g = tf.Graph() 
with g.as_default(): 
    a = tf.Variable(initial_value=[[0, 0, 0, 0],[0, 0, 0, 0]]) 
    b = tf.scatter_update(a, [0, 1], [[1, 0, 0, 0], [1, 0, 0, 0]]) 

with tf.Session(graph=g) as sess: 
    sess.run(tf.initialize_all_variables()) 
    print sess.run(a) 
    print sess.run(b) 

आउटपुट::

[[0 0 0 0] 
[0 0 0 0]] 
[[1 0 0 0] 
[1 0 0 0]] 

लेकिन फिर पूरे टेन्सर इसे करने के लिए तेजी से हो सकता है बदलने के लिए होने सिर्फ एक पूरी तरह से आवंटित

इस तरह आप चर के पहले तत्व को अपडेट कर सकते है नया।

संबंधित मुद्दे