Двойная Фокальная Потеря - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь реализовать двойную фокусную потерю из бумаги , и одной интересной идеей является пользовательский слой, у которого обучаемый параметр похож на альфа в исходной фокусной потере, но здесь он может быть обучаемым вместо фиксированного.

Идея - это умножение входного значения этого пользовательского слоя на обучаемый параметр (W_i) для каждого класса, а выходным будет ввод для softmax.

Изображение процесса

Мой вопрос о том, как реализовать этот W_i для умножения на входы, как я могу инициализировать его с помощью некоторого пользовательского вычисления? Это то, что у меня сейчас.

class ACW(tf.keras.layers.Layer):

  def __init__(self, units=10):
    super(ACW, self).__init__()
    self.units = units

  def build(self, input_shape):

    self.w = self.add_weight(shape=(input_shape[-1], self.units),
                             initializer='random_uniform', # <- I THINK I ONLY NEED TO CHANGE THE INITIALIZER
                             trainable=True)
    self.b = self.add_weight(shape=(self.units,),
                             initializer='zeros',
                             trainable=True)

  def call(self, inputs):
    return tf.matmul(inputs, self.w) + self.b
...