Как получить доступ к внутренним размерам тензора? - PullRequest
0 голосов
/ 30 апреля 2018

Выход моей функции conv2d представляет собой 4-D тензор [64, 32, 32, 64] = [batch_size, output_height, output_width, number of filters]. Я хочу сделать 3 строки с обеих сторон и 3 столбца также с обеих сторон до нуля выходной матрицы. Поэтому я хочу создать аналогичный тензор (mask_tensor) размером [64, 26+3(zero_pad), 26+3 (zero_pad), 64] и умножить его на исходную матрицу. Я думал о доступе к [26, 26] и установил на ноль отступы ... Как получить доступ к внутренним размерам тензора?

import tensorflow as tf

drop_matrix = tf.constant(1, shape=[64, 26, 26, 64], dtype=tf.float32)
paddings = tf.constant([leave this dimension ,pick this dimension, pick this dimension, leave this dimension]  )
t = tf.pad(drop_matrix_one_full, paddings, "CONSTANT")

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Вам не нужно получать доступ к внутренним размерам, но вы можете заполнить каждый размер, указав список размеров отступа для каждого измерения тензора:

>>> drop_matrix = tf.constant(1, shape=[64, 26, 26, 64], dtype=tf.float32)
>>> drop_matrix
<tf.Tensor 'Const:0' shape=(64, 26, 26, 64) dtype=float32>
>>> x = tf.pad(drop_matrix, [[0,0], [3,3], [3,3], [0,0]])
>>> x
<tf.Tensor 'Pad:0' shape=(64, 32, 32, 64) dtype=float32>

Вы можете установить значение для pad с чем-то, используя параметр constant_values, но по умолчанию установлено значение 0, поэтому в этом нет необходимости. Для пояснения, 2 элемента в каждом списке заполняются с каждой стороны этого измерения, поэтому заполнение только с одной стороны можно сделать с помощью [0,3] для этого измерения.

Отредактированный пример для соответствия ситуации

0 голосов
/ 30 апреля 2018

Попробуйте удалить первое и последнее значение из массива:

import tensorflow as tf

drop_matrix = tf.constant(1, shape=[64, 26, 26, 64], dtype=tf.float32)
paddings = tf.constant([leave this dimension ,pick this dimension, pick this dimension, leave this dimension][1:-1]  )
t = tf.pad(drop_matrix_one_full, paddings, "CONSTANT")

Добавив [1:-1] в качестве методов доступа к вашему массиву, вы получите массив без первого и последнего элемента, эффективно получая доступ к средним значениям .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...