Keras - Получить слои, к которым этот слой подключен - PullRequest
0 голосов
/ 12 июня 2018

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

Есть ли способ получить предшествующий слой определенного слоя?Я хотел бы сделать что-то вроде этого:

x = <some number>
layer_x = model.layers[x] 
predecessor_layers = ???

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Решение, предложенное @Mitiku, возвращает только входной тензор, но нам нужен слой предшественника.Слой предшественника можно найти следующим образом:

x = <some number>
layer_x = model.layers[x] 
int_node = layer_x.inbound_nodes[0]
predecessor_layers = int_node.inbound_layers[0]

В предлагаемом решении мы предполагаем, что layer_x имеет только один слой предшественника.Чтобы получить этот слой, мы сначала получаем доступ к узлу, который соединяет эти два слоя: int_node, а затем берет слой, который находится на его входе: int_node.inbound_layers[0].

Примечание. Это решение не подходит, поскольку оно имеет доступ к защищенному атрибуту, но работает.

0 голосов
/ 12 июня 2018

Слой в keras имеет два атрибута, которые указывают на его входные и выходные слои.В вашем случае предшествующий слой - это входные слои, и вы можете получить к нему доступ, вызвав для него атрибут input.

x = <some number>
layer_x = model.layers[x] 
predecessor_layers = layer_x.input
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...