32 lines
993 B
Python
32 lines
993 B
Python
from keras_core import activations
|
|
from keras_core import initializers
|
|
from keras_core import operations as ops
|
|
from keras_core.layers.layer import Layer
|
|
|
|
|
|
class Dense(Layer):
|
|
def __init__(self, units, activation=None, use_bias=True, name=None):
|
|
# TODO: support all other arguments.
|
|
super().__init__(name=name)
|
|
self.units = units
|
|
self.activation = activations.get(activation)
|
|
self.use_bias = use_bias
|
|
|
|
def build(self, input_shape):
|
|
input_dim = input_shape[-1]
|
|
self.kernel = self.add_weight(
|
|
shape=(input_dim, self.units),
|
|
initializer=initializers.GlorotUniform(),
|
|
)
|
|
if self.use_bias:
|
|
self.bias = self.add_weight(
|
|
shape=(self.units,),
|
|
initializer=initializers.Zeros(),
|
|
)
|
|
|
|
def call(self, inputs):
|
|
x = ops.matmul(inputs, self.kernel)
|
|
if self.use_bias:
|
|
x = x + self.bias
|
|
return self.activation(x)
|