2017-01-06 2 views
1

Можно ли извлечь весы предыдущего слоя, изменить их и снова установить на следующий уровень. Я хочу ввести пользовательский уровень в сети, который будет изменять вес (в соответствии с желаемой логикой), а затем установить измененные значения веса на следующий уровень. Подобно тому, что изображено на рисунке ниже:Извлечь весы предыдущего слоя

enter image description here

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

Благодаря

KK

ответ

0

TL; DR: Загружайте одна модель (без компиляции) и использовать веса, которые вы хотите, чтобы инициализировать модель. Создайте новые веса для слоев, которые вы хотите изменить.

Полная версия:

Согласно this thread и, как объяснено fchollet себя, канонический способ сделать это, чтобы загрузить свои веса в предыдущей модели Keras (вам не нужно скомпилировать его, так это мгновенно) и использовать эту модель в качестве настраиваемой по запросу структуры данных для доступа к весам.

Для последовательной модели вы можете сделать это следующим образом:

weights = model.layers[5].get_weights() 
model.layers[5].set_weights(weights) 

Смотрите также: another discussion на эту тему с fchollet.

Смежные вопросы