В моей модели TensorFlow используется tf.random_uniform
для инициализации переменной. Я хотел бы указать диапазон, когда я начинаю обучение, поэтому я создал местозаполнитель для значения инициализации.
init = tf.placeholder(tf.float32, name="init")
v = tf.Variable(tf.random_uniform((100, 300), -init, init), dtype=tf.float32)
initialize = tf.initialize_all_variables()
Я инициализирую переменные в начале обучения так.
session.run(initialize, feed_dict={init: 0.5})
Это дает мне следующую ошибку:
ValueError: initial_value must have a shape specified: Tensor("Embedding/random_uniform:0", dtype=float32)
Я не могу определить правильный параметр shape
, чтобы перейти к tf.placeholder
. Я бы подумал, что для скаляра я должен сделать init = tf.placeholder(tf.float32, shape=0, name="init")
, но это дает следующую ошибку:
ValueError: Incompatible shapes for broadcasting: (100, 300) and (0,)
Если я заменил init
литеральным значением 0.5
в вызове tf.random_uniform
, он будет работать.
Как передать это скалярное начальное значение через словарь фида?