Chciałbym stworzyć własny warstwa keras (kodowa książka dla modelu VQVAE). Podczas treningu chciałbym mieć tf.Variable
który monitoruje wykorzystanie każdego kodu, żebym mógł ponownie uruchomić niewykorzystane kody. Dlatego stworzyłem swój warstwa kodowej książki w następujący sposób...
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)
Problem, z którym mam do czynienia, polega na tym, że Layer
klasa znajduje zmienną - członek self.code_counter
i dodaje go do listy wag, które są zapisywane wraz z warstwą. On oczekuje również, że self.code_counter
obecny przy starcie wagi, czego się nie dzieje, gdy pracuję w trybie wyjścia. Jak mogę zrobić tak, aby keras nie sprawdzał zmienną w moim warstwie. Nie chcę, aby to istniała lub była częścią layers.weights
.