У меня возникла проблема в моем пользовательском слое в 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)