2017-06-20 130 views
1

我有一個大小爲(64,2,82,1)的Tensorflow張量A,我想用張量B的相應部分替換它的(:,:,80:82,:)部分(也是(64 ,2,82,1)尺寸)。如何用Tensorflow張量中的某些值替換其他張量的值?

我該怎麼做?

PS:準確地說,我的意思是看起來像這樣在numpy的操作:

A[:, :, 80:82, :] = B[:, :, 80:82, :] 
+0

給看看答案在這裏https://stackoverflow.com/questions/44648788/how-to-assign-values-to-specified-location-in-tensorflow –

+0

也有在github討論,HTTPS: //github.com/tensorflow/tensorflow/issues/206,我不明白它是否以及如何解決它... –

回答

0

tf.assign應該工作:(未測試)

tf.assign(A[:, :, 80:82, :], B[:, :, 80:82, :]) 
+0

不幸的是它不:'a = tf.constant([[1,2,3] ,[4,5,6]])','b = tf.constant([[7,8,9],[10,11,12]])','tf.assign(a [0 ,:] ,b [0,:])'給出以下錯誤:'TypeError:assign()得到了一個意外的關鍵字參數'name'' – Massyanya

+0

assign通常用於將數值與變量關聯... –

1

下面的代碼可能會幫助你得到一些想法,

a = tf.constant([[11,0,13,14], 
       [21,22,23,0]]) 
condition = tf.equal(a, 0) 
case_true = tf.reshape(tf.multiply(tf.ones([8], tf.int32), -9999), [2, 4]) 
case_false = a 
a_m = tf.where(condition, case_true, case_false) 
sess = tf.Session() 
sess.run(a_m) 

這裏我訪問個人元素的tenso [R!