Ja by som chcel vytvoriť vlastné keras vrstva (a codebook pre VQVAE model.) Počas školenia, by som chcel mať tf.Variable
ktorý sleduje používania každého kód, aby som mohol reštartovať nevyužité kódy. Tak som vytvoril svoje Codebook vrstva takto...
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)
Problém mám, je, že Layer
trieda nájde členských premennej self.code_counter
a pridá ich do zoznamu váhy, ktoré sú uložené s vrstva. To tiež očakáva, že self.code_counter
byť prítomný pri hmotnosti sú naložené, ktoré nie je prípad, kedy som spustiť v inference režime. Ako môžem robiť to tak, keras nesleduje premennej v mojom vrstvy. Nechcem, aby to trval alebo ak chcete byť súčasťou layers.weights
.