es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“TensorFlow ‘Variable’ no tiene parámetros entrenables.”

Estoy utilizando una capa Lambda de Keras para realizar algunas operaciones con un tensor de pesos entrenables (o al menos debería); para hacer eso, elegí un tf.Variable como parámetro pero, a pesar de tener trainable=True, el resumen muestra 0 parámetros entrenables.

weights = tf.Variable(initial_value=tf.random.normal((300,)), trainable=True)
custom_layer = keras.layers.Lambda(custom_func)((input_layer, weights))

Independientemente de trainable=True, los pesos siguen sin poder entrenarse. Una opción alternativa sería utilizar una capa como:

weights = Dense(300, activation='linear', use_bias=False)

En este caso, tengo problemas en la custom_func debido a que tf.math.multiply no acepta, al menos según mis experimentos, los parámetros de la capa Dense de ninguna manera (probé .get_weights() y .variables).

Cualquier solución para obtener un tensor de pesos entrenables es muy bienvenida, gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la variable tf.Variable no está siendo reconocida como un parámetro entrenable incluso cuando se establece trainable=True.

    Una opción alternativa para obtener un tensor de pesos entrenable es usar una capa Dense en lugar de una capa Lambda como se muestra en el segundo bloque de código. Sin embargo, esto también puede causar problemas con la operación tf.math.multiply en la función custom_func.

    Una posible solución sería usar tf.keras.backend.variable en lugar de tf.Variable con el argumento trainable establecido en True, de esta manera:

    weights = tf.keras.backend.variable(initial_value=tf.random.normal((300,)), trainable=True)
    

    Esto debería crear un tensor de pesos entrenable que se puede usar en la función custom_func.

Comments are closed.