I am working with images and want to build custom layer for my model. I want to multiply each pixel by weight and add bias to it (x.w+b). I know that flatten will work for this but I have additional tasks in calculating and I may need transpose for some of them as well. my questions, can I multiply 2D form of each inputs and wight and add two dimensional bias to it for my custom dense layer? I tried but shape only accepts one dimensional input and gives number of unit output shape=(input_dim, units). I want input_dim to be 2D for both Weight and Bias!
class Dense(layers.Layer):
def __init__(self, units):
super(Dense, self).__init__()
self.units = units
def build(self, input_shape):
self.w = self.add_weight(
name="w",
shape=(input_shape[-1], self.units),
initializer="random_normal",
trainable=True,
)
self.b = self.add_weight(
name="b", initializer="random_normal", trainable=True, shape=(input_shape[-1], self.units),
)
def call(self, inputs):
return tf.matmul(inputs, self.w) + self.b