使用keras / tensorflow定义自定义正则化器的问题

时间:2019-08-21 16:49:00

标签: tensorflow keras gradient regularized

我想使用查找表作为编写正则化函数的函数。假设权重是使用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

0 个答案:

没有答案