¿TensorFlow permite la definición de variables con tamaño indefinido?

¿TensorFlow permite la definición de variables con tamaño indefinido? Por ejemplo, puedo definir fácilmente un marcador de posición con valores de None en forma; esto significa que estos valores se pueden especificar en el tiempo de ejecución, después de que se construya el gráfico. Pero las formas de las variables deben suministrarse antes de la construcción del gráfico. ¿Es cierta la afirmación anterior? Si es así, ¿por qué es así?

Las formas variables pueden realmente cambiarse después de construir el gráfico.

Ejemplo:

 value = tf.placeholder("float", [None]) x = tf.Variable(value, validate_shape=False) with_assign_op = tf.assign(x, [1,2,3,4,5], validate_shape=False) sess = tf.Session() sess.run(tf.variables_initializer([x]), feed_dict={value: [1,2,3]}) print(sess.run(x)) # [ 1. 2. 3.] sess.run(tf.variables_initializer([x]), feed_dict={value: [1,2,3,4]}) print(sess.run(x)) # [ 1. 2. 3. 4.] sess.run(with_assign_op) print(sess.run(x)) # [ 1. 2. 3. 4. 5.] 

Echa un vistazo a los documentos de tf.Variable en tf.Variable .

El argumento de la palabra clave validate_shape :

Si es False, permite que la variable se inicialice con un valor de forma desconocida. Si es True, el valor predeterminado, la forma de initial_value debe ser conocida.

Por lo tanto, establecer esto en Falso le permitiría inicializar la variable con un valor de forma desconocida.