Существует ли тенор потока кера, который является оберткой для набора плотных слоев? - PullRequest
0 голосов
/ 17 февраля 2020

Например, это тривиально, но есть ли слой для этого? На самом деле это не свертка ... для каждой точки данных существует один "плотный слой" (веса).

In [266]: X = np.random.randn(10, 3); W = np.random.randn(10, 3, 4); (X[:, :, None] * W).sum(axis=1).shape
Out[266]: (10, 4)

1 Ответ

1 голос
/ 17 февраля 2020

Создайте свой собственный слой:

Предупреждение: работает только с фиксированным размером пакета, вам нужно определить batch_shape или batch_input_shape в ваших моделях !!!!

class SampleDense(Layer):
    def __init__(self, units, **kwargs):
        self.units = units
        super(SampleDense, self).__init__(**kwargs)

    def build(self, input_shape):
        weight_shape = input_shape + (self.units,)

        self.kernel = self.add_weight(name='kernel', 
                                      shape=weight_shape,
                                      initializer='uniform',
                                      trainable=True)
        self.built = True

    def call(self, inputs):
        inputs = K.expand_dims(inputs, axis=-1)
        outputs = inputs * self.kernel
        outputs = K.sum(outputs, axis=-2)

        return outputs

    def compute_output_shape(self, input_shape):
        return input_shape[:-1] + (self.units,)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...