In Keras, call() defines what a layer or model does during its forward pass. It receives input tensors, applies the layer’s computation, and returns output tensors. The layer is used like a function because __call__() invokes call() for you. section 3.6.2
A simple dense computation
A custom dense layer can implement call() as `y = keras.ops.matmul(inputs, self.W) + self.b`, then apply an activation when one is configured. Calling `my_dense` with a tensor shaped `(2, 784)` produces an output shaped `(2, 32)`.
Keep these roles distinct:
- build() creates weight state when the input shape becomes known; call() uses that state to compute outputs. section 3.6.2

