Thursday, 24 June 2021

RBF Layer - difficulty in understanding

I wanted to implement an RBFN and found this code on StackOverflow itself. While I do understand some of the code, I do not understand what gamma, kwargs, and the entire call function. Can someone please explain it to me?

from keras.layers import Layer
from keras import backend as K

class RBFLayer(Layer):
    def __init__(self, units, gamma, **kwargs):
        super(RBFLayer, self).__init__(**kwargs)
        self.units = units
        self.gamma = K.cast_to_floatx(gamma)
def build(self, input_shape):
    self.mu = self.add_weight(name='mu',
                              shape=(int(input_shape[1]), self.units),
                              initializer='uniform',
                              trainable=True)
    super(RBFLayer, self).build(input_shape)

def call(self, inputs):
    diff = K.expand_dims(inputs) - self.mu
    l2 = K.sum(K.pow(diff,2), axis=1)
    res = K.exp(-1 * self.gamma * l2)
    return res

def compute_output_shape(self, input_shape):
    return (input_shape[0], self.units)


from RBF Layer - difficulty in understanding

No comments:

Post a Comment