tensorflow променя/присвоява стойности на матрични елементи по списък от (различен диапазон от 2d) срезове

Имам нулева матрица (можем да я видим като картина):

matrix = tf.zeros(name="matrix", shape=(4, 5), dtype=tf.int32)

и тензор от тетради, които показват някои "кутии" (от горния ляв и долния десен връх, може би припокрити) на това matrix:

(first_row, first_column, second_row, second_column)

тук [first_row:second_row, first_column,second_column] образува една кутия на matrix.

И въпросът е: как мога да присвоя/променя цялата "стойност в кутия" на картината от 0 до 1, използвайки нарязването [first_row:second_row, first_column,second_column] или други функции на tensorflow?

Актуализация:

Вход:

matrix = tf.zeros(name="matrix", shape=(4, 5), dtype=tf.int32)

first_row = tf.constant([0,2])
first_column = tf.constant([2,1])
second_row = tf.constant([3,3])
second_column = tf.constant([3,3])

Очакваният резултат (чрез полета пример (0,2,3,3) и (2,1,3,3)):

array([[0, 0, 1, 1, 0],
       [0, 0, 1, 1, 0],
       [0, 1, 1, 1, 0],
       [0, 1, 1, 1, 0]])

person shizi    schedule 08.04.2019    source източник
comment
Можете ли да дадете примери за вход и изход? Можете да актуализирате въпроса си.   -  person Mohan Radhakrishnan    schedule 08.04.2019


Отговори (1)


Това може да помогне. Но ако не е, можете да изясните въпроса си.

import tensorflow as tf

tensor = tf.Variable(
    [[0, 0, 1, 1, 0],
     [0, 0, 1, 1, 0],
     [0, 1, 1, 1, 0],
     [0, 1, 1, 1, 0]])


with tf.Session() as sess :
  sess.run( tf.global_variables_initializer() )
  print(sess.run( tf.assign(tensor[0:1,2:3] , [[9]] )))

Изходът е това.

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

И ако промените последния ред на print(sess.run( tf.assign(tensor[0:1,2:4] , [[9,9]] ))), получавате

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

Когато не се уверя, че лявата страна на заданието не съвпада с дясната страна по отношение на формата, получавам тази грешка. Това трябва да ви помогне.

нарязана форма на l-стойност [1,2] не съответства на форма на r-стойност [1,1]

И примерът print(sess.run( tf.assign(tensor[0:2,2:4] , [[9,9],[9,9]] ))) се отпечатва

[[0 0 9 9 0]
 [0 0 9 9 0]
 [0 1 1 1 0]
 [0 1 1 1 0]]
person Mohan Radhakrishnan    schedule 08.04.2019
comment
Благодаря много! Решавам съгласуваността на лявата и дясната стойност, като определям техните размери. - person shizi; 08.04.2019