Je voudrais créer un personnalisé keras couche (un livre de codes pour un VQVAE modèle.) Pendant la formation, je voudrais avoir un tf.Variable
les pistes à l'utilisation de chaque code afin que je puisse redémarrer inutilisés codes. J'ai donc créé mon Codebook couche comme suit...
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)
Le problème que j'ai est que l' Layer
classe trouve la variable membre self.code_counter
et l'ajoute à la liste des poids qui sont enregistrés avec la couche. Il attend également de l' self.code_counter
d'être présent lorsque les poids sont chargés qui n'est pas le cas quand je le lance en mode de déduction. Comment puis-je faire keras ne fait pas le suivi d'une variable dans ma couche. Je ne veux pas qu'il a persisté et de faire partie de la layers.weights
.