Смещение только Слой в Керасе - PullRequest
0 голосов
/ 11 марта 2020

Как можно построить слой в Keras, который отображает вход x на выход вида x + b, где b - обучаемый вес того же измерения? (Также функция активации здесь будет идентифицировать).

1 Ответ

1 голос
/ 12 марта 2020

Вы всегда можете создать собственный слой, расширив класс tf.keras.layers.Layer, вот как я бы это сделал

import tensorflow as tf
print('TensorFlow:', tf.__version__)

class BiasLayer(tf.keras.layers.Layer):
    def __init__(self, *args, **kwargs):
        super(BiasLayer, self).__init__(*args, **kwargs)

    def build(self, input_shape):
        self.bias = self.add_weight('bias',
                                    shape=input_shape[1:],
                                    initializer='zeros',
                                    trainable=True)
    def call(self, x):
        return x + self.bias

input_layer = tf.keras.Input(shape=[5])
x  = BiasLayer()(input_layer)
model = tf.keras.Model(inputs=[input_layer], outputs=[x])

model.summary()
TensorFlow: 2.1.0
Model: "model_2"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_7 (InputLayer)         [(None, 5)]               0         
_________________________________________________________________
bias_layer_3 (BiasLayer)     (None, 5)                 5         
=================================================================
Total params: 5
Trainable params: 5
Non-trainable params: 0
_________________________________________________________________
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...