Me gustaría crear una personalizada keras (capa de un libro de códigos para un VQVAE modelo). Mientras que la formación me gustaría tener una tf.Variable
que realiza un seguimiento del uso de cada uno de los códigos para que yo pueda reiniciar sin usar códigos. Así que he creado mi libro de códigos de la capa de la siguiente manera...
class Codebook(layers.Layer):
def __init__(self, num_codes, code_reset_limit = None, **kwargs):
super().__init__(**kwargs)
self.num_codes = num_codes
self.code_reset_limit = code_reset_limit
if self.code_reset_limit:
self.code_counter = tf.Variable(tf.zeros(num_codes, dtype = tf.int32), trainable = False)
def build(self, input_shape):
self.codes = self.add_weight(name = 'codes',
shape = (self.num_codes, input_shape[-1]),
initializer = 'random_uniform',
trainable = True)
super().build(input_shape)
El problema que tengo es que el Layer
la clase se encuentra la variable de miembro self.code_counter
y lo agrega a la lista de los pesos de los que se salvan con la capa. También se espera que el self.code_counter
estar presente cuando los pesos están cargados que no es el caso cuando ejecuto en modo de inferencia. ¿Cómo puedo hacer lo keras no hace un seguimiento de una variable en mi capa. No quiero que persisten o a ser parte de la layers.weights
.