AttributeError: la capa no tiene nodos entrantes, o AttributeError: la capa nunca se ha llamado

Necesito una forma de obtener la forma del tensor de salida para cualquier tipo de capa (es decir, Denso, Conv2D, etc.) en TensorFlow. Según la documentación, hayoutput_shape propiedad que resuelve el problema. Sin embargo, cada vez que accedo a ella obtengoAttributedError.

Aquí hay un ejemplo de código que muestra el problema:

import numpy as np
import tensorflow as tf


x = np.arange(0, 8, dtype=np.float32).reshape((1, 8))
x = tf.constant(value=x, dtype=tf.float32, verify_shape=True)

dense = tf.layers.Dense(units=2)

out = dense(x)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    res = sess.run(fetches=out)
    print(res)
    print(dense.output_shape)

Losprint(dense.output_shape)a declaración @ generará un mensaje de error:

AttributeError: The layer has never been called and thus has no defined output shape.

oprint(dense.output) Producirá

AttributeError('Layer ' + self.name + ' has no inbound nodes.')
AttributeError: Layer dense_1 has no inbound nodes.

¿Hay alguna forma de corregir el error?

PD. Sé que en el ejemplo anterior puedo obtener la forma del tensor de salida a través deout.get_shape(). Sin embargo, quiero saber por quéoutput_shape la propiedad no funciona y ¿cómo puedo solucionarlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta