Как получить (или сохранить) вес в определяемом пользователем слое с помощью tenorflow keras 2.0? - PullRequest
0 голосов
/ 30 мая 2020

У меня возникла проблема в моем пользовательском слое в tenorflow keras 2.0. Ниже мой код. Смысл состоит в том, что когда ввод поступает на уровень, def call () выполняет tf.image.adjust_gamma (inputs, weight_value).

Но я не знаю, как получить вес. Adjust_gamma требуется параметр (матрица, значение),

Если я изменю weight_Value на self.w, произошла ошибка.

def CorrectGammaModel():
    inputs = Input(shape=(256 , 256, 1))
    print(inputs.shape[0]) #None
    outputs = MyLayer(inputs.shape[0])(inputs) #(?, 256 ,256, 1)
    correcter = Model(inputs=inputs, outputs=outputs, name='correct')

вернуть корректор

kernel_init = tf.keras.initializers.Constant(1.)
kernel_regularizer = tf.keras.regularizers.l1(0.01)
kernel_constraint = non_neg()
class MyLayer(tf.keras.layers.Layer):
    def __init__(self, num_outputs):
        super(MyLayer, self).__init__()
        self.num_outputs = num_outputs

    def build(self, input_shape):
        self.w = self.add_weight("kernel", 
                                   initializer=kernel_init,
                                   trainable=True,
                                   regularizer=kernel_regularizer,
                                   constraint=kernel_constraint 
                                    )
        super(MyLayer, self).build(input_shape)
    def get_config(self):
        return {'num_outputs': self.num_outputs}
    def call(self, inputs):
        return tf.image.adjust_gamma(inputs, 1)
...