тензор потока изменяет / присваивает значения матричного элемента списком (различный диапазон 2d) срезов - PullRequest
1 голос
/ 08 апреля 2019

У меня есть нулевая матрица (мы можем рассматривать ее как рисунок):

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] или другие функции тензорного потока?

Обновление :

Ввод:

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]])

1 Ответ

0 голосов
/ 08 апреля 2019

Это может помочь.Но если этого не произойдет, вы можете уточнить свой вопрос.

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]]
...