Я пытаюсь выполнить свертку с переменными размерами ввода. Для достижения этой цели я использую пакетный размер 1. Тем не менее, один из узлов является максимальное объединение узел, который нуждается в форму ввода в виде списка ksize
:TensorFlow feed целое число
pooled = tf.nn.max_pool(
h,
ksize=[1, self.input_size - filter_size + 1, 1, 1],
strides=[1, 1, 1, 1],
padding='VALID',
name="pool")
Теперь, очевидно, может быть input_size выводится из входа (который является заполнителем):
self.input_x = tf.placeholder(tf.int32, [None, None], name="input_x")
Но я не могу использовать self.input_x.get_shape()[0]
, потому что форма является динамическим. Поэтому я намереваюсь передать размер ввода как feed_dict на каждом шаге. Однако я не могу понять, как передать целое число в feed_dict. Каждый заполнителем является тензором, так что если я делаю:
self.input_size = tf.placeholder(tf.int32, shape=(), name="input_size")
я должен был бы сделать self.input_size.eval()
, чтобы получить значение INT, который дает мне ошибку, что мне нужно кормить input_size
. Я предполагаю, что это происходит потому, что eval запускает вычисления до того, как происходит этап обучения, и в этот момент нет значения для input_size.
Есть ли способ, которым я могу динамически получить оп, который вычисляет форму ввода или способ передать целое число на этап обучения?
Он по-прежнему возвращает список тензоров. Мне нужно фактическое значение (целое) второго измерения и во время выполнения. Вот почему я думаю о том, чтобы «кормить» это как параметр, однако, похоже, я могу только кормить тензоры? –
Можете ли вы комбинировать целое число с "input_size = tf.placeholder (tf.int32)"? Он работает для меня, но я на TF r0.8, и я не пробовал с последней версией. Для проблемы списка тензоров я изменил свой ответ. Я не понимаю, почему, но tf.pack массив ksize должен работать ... – Corentin
Это проблема в TF. Независимо от того, что вы делаете - ksize будет оцениваться во время строительства, чтобы это было невозможно. –