我想使用查找表作为编写正则化函数的函数。假设权重是使用8位量化的。因此,每个权重都有256个可能的候选者。查找表代表每个可能值的成本。因此,查找表是具有256个元素的向量。我使用Keras提供的模板编写了一个正则化器。我的问题是:
1)我写得正确吗?
2)Tensorflow / Keras如何处理渐变?我需要做其他事情来处理渐变吗? (因为我使用的是基于查找表的功能)。
这是我的代码的一部分:(由于向量(Grad)太长,因此我在此处删除了大部分元素)
def __call__(self, x):
regularization = 0.
Grad = K.constant([7.96875,3.734375,-0.49609375,-0.5,...,-1.4921875],dtype='float32');
Graddata = lambda Grad: Grad
if self.Er:
regularization += self.Er * K.sum(K.square(Graddata(tf.round(K.abs(x)*(2 ** 8)))))
return regularization