Возможно ли в Keras создать сверточный слой (Conv2D
) таким образом, чтобы ядра инициализировались в соответствии с инициализатором (например, he_normal
, glorot_uniform
и т. Д.), Но создавались одинаковыми для каждого ядро?
Другими словами, я хотел бы инициализировать одно из ядер, используя kernel_initializer='he_normal'
, а затем скопировать и использовать эту инициализированную весовую матрицу для инициализации всех других ядер только в этом слое.
В полупсевдокодовом режиме это (похоже на концепцию) на то, что я ищу:
n_filters = 64
x = Conv2D(1, 3,... kernel_initializer='he_normal')
he_normal_kernel = *the kernel weight matrix that was just created* #copy kernel weight matrix
he_normal_kernels = he_normal_kernel * n_filters #make n_filters copies of that matrix
x = Conv2D(n_filters, 3,... kernel_initializer=he_normal_kernels) # use those as the initialization of our convolutional layer
Я абсолютно беспристрастен к , как реализовать это, до тех пор, пока он работает как задумано.
Пока мы здесь, есть ли какие-то внутренние теоретические причины, по которым это может быть плохой идеей?
Спасибо!