Как выполнить инициализацию с моими собственными весами для второго конвективного слоя в последовательной модели Keras? - PullRequest
0 голосов
/ 07 января 2019

У меня есть модель, которая имеет два сверточных слоя. Я успешно установил новые веса для слоя conv_1, но при установке весов для слоя conv_2 я получаю сообщение об ошибке:

    model.add(Conv2D(8, (3, 3), input_shape=(28,28,1), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Conv2D(6, (3, 3), input_shape=(26,26,1), activation='relu'))

    model.layers[0].set_weights(w1)
    model.layers[2].set_weights(w2)

Здесь w1.shape == (3, 3, 1, 8) и w2.shape == (3, 3, 1, 6). Сообщение об ошибке:

ValueError: Layer weight shape (3, 3, 8, 6) not compatible with provided weight shape (3, 3, 1, 6)

Я не понимаю, почему он не устанавливает веса?

1 Ответ

0 голосов
/ 08 января 2019

Как я уже упоминал в разделе комментариев, альтернативой является использование одинаковых весов для всех каналов в фильтре. Для этого вы можете легко повторить значения w2 восемь раз, чтобы получить массив формы (3,3,8,6):

w2 = w2.repeat(8,axis=2)
w2.shape
# (3,3,8,6)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...