#tensorflow
#tensorflow
Вопрос:
Я попытался создать tf.Variable с динамической формой. Ниже изложена проблема.
Это работает.
init_bias = tf.random_uniform(shape=[self.config.hidden_layer_size, tf.shape(self.question_inputs)[0]])
Однако, когда я пытаюсь это сделать:
init_bias = tf.Variable(init_bias)
Он выдает ошибку ValueError: у initial_value должна быть указана форма: Tensor(«random_uniform:0», shape=(?, ?), dtype=float32)
Просто введите контекст (ввод вопроса — это заполнитель, какой динамический пакет):
self.question_inputs = tf.placeholder(tf.int32, shape=[None, self.config.qmax])
Похоже, что ввод динамического значения в случайную форму дает shape=(?,?), что выдает ошибку с tf.Variable.
Спасибо и ценю любую помощь!
Ответ №1:
Это должно сработать:
init_bias = tf.Variable(init_bias,validate_shape=False)
Если validate_shape имеет значение False, tensorflow позволяет инициализировать переменную значением неизвестной формы.
Однако то, что вы делаете, кажется мне немного странным. В tensorflow переменные обычно используются для хранения весов нейронной сети, форма которой остается фиксированной независимо от размера пакета. Переменный размер пакета обрабатывается путем передачи тензора переменной длины в график (и умножения / добавления его с фиксированной переменной смещения формы).
Комментарии:
1. Я нашел вариант использования при предварительной загрузке данных: tensorflow.org/programmers_guide/reading_data#preloaded_data . Возможно, вам захочется передать разные наборы данных разных размеров.
2. Я все еще получаю сообщение об ошибке
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder' with dtype int32 [[Node: Placeholder = Placeholder[dtype=DT_INT32, shape=[], device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]