Как я могу сделать следующее в тензорном потоке?Манипулирование матричными элементами в тензорном потоке
mat = [4,2,6,2,3] #
mat[2] = 0 # simple zero the 3rd element
Я не могу использовать [] скобки, потому что он работает только на постоянных, а не на переменных. Я не могу использовать функцию среза, потому что это возвращает тензор, и вы не можете назначить тензор.
import tensorflow as tf
sess = tf.Session()
var1 = tf.Variable(initial_value=[2, 5, -4, 0])
assignZerosOP = (var1[2] = 0) # < ------ This is what I want to do
sess.run(tf.initialize_all_variables())
print sess.run(var1)
sess.run(assignZerosOP)
print sess.run(var1)
Напечатает
[2, 5, -4, 0]
[2, 5, 0, 0])
Спасибо большое, это была определенная помощь, и я мог бы с этим справиться, но это было бы несколько combersome.What Если мне действительно нужно было изменить тензор? Нет ли способа сделать это? Я хочу реализовать сетевую визуализацию, и мне нужно распространять изображение до уровня активации, ноль всех активировок, кроме случайного, а затем распространять его обратно. – Shagas
Тензоры неизменяемы. В общем случае, если вы хотите сохранить и изменить состояние, вы сохраните его в переменной, которую вы * можете * мутировать. Но в противном случае вы просто создаете новый тензор, полученный из оригинала, и используете его. В случае, когда вы описываете, это, вероятно, подход. – dga
Спасибо за ответ. Я решил проблему, используя новый тензор, полученный из оригинала, как вы предложили. – Shagas