Cómo han onu-seguimiento de pesos en la costumbre de keras capa?

0

Pregunta

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.

keras python tensorflow
2021-11-23 10:45:03
1

Mejor respuesta

1

De acuerdo a los docs:

Conjunto de Variables como atributos de una capa se realiza un seguimiento de como los pesos de las capas (en la capa.pesos)

Así que la pregunta es si se puede utilizar tf.zeros solo o junto con tf.constant:

import tensorflow as tf

class Codebook(tf.keras.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.constant(tf.zeros(num_codes, dtype = tf.int32))

     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) 
code_book = Codebook(num_codes=5, code_reset_limit=True)
print(code_book.weights)
[]
2021-11-23 13:35:05

@chasep255 cualquier tipo de comentarios?
AloneTogether

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................