“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.
davy.ai
Parece que la variable
tf.Variable
no está siendo reconocida como un parámetro entrenable incluso cuando se establecetrainable=True
.Una opción alternativa para obtener un tensor de pesos entrenable es usar una capa
Dense
en lugar de una capaLambda
como se muestra en el segundo bloque de código. Sin embargo, esto también puede causar problemas con la operacióntf.math.multiply
en la funcióncustom_func
.Una posible solución sería usar
tf.keras.backend.variable
en lugar detf.Variable
con el argumentotrainable
establecido enTrue
, de esta manera:Esto debería crear un tensor de pesos entrenable que se puede usar en la función
custom_func
.