Можно ли рассчитать градиент слоя в последовательной модели в нейронной сети Keras? - PullRequest
0 голосов
/ 09 марта 2019

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

Но когда я пытаюсь вычислить градиент по отношению к этому слою, я получаю [None], возвращаемое в качестве вывода.Я могу взять градиент для других слоев, таких как слой сцепления, но не для всех слоев в моих 2 ветвях.Могу ли я взять градиент этого слоя, учитывая, что он находится в последовательной оболочке моей модели?

Вот код, который показывает, что я пытаюсь сделать.

from keras.models import Sequential, Model
from keras.layers import Dense, Input, concatenate
import keras.backend as K

# Init branch 1
branch1 = Sequential()
branch1.add(Dense(64, activation='relu', input_shape=(1000,)))
branch1.add(Dense(32, activation='relu'))

# Init branch 2
branch2 = Sequential()
branch2.add(Dense(16, activation='relu', input_shape=(500,)))
branch2.add(Dense(8, activation='relu'))

branch1_input = Input(shape=(1000,))
branch1_out = branch1(branch1_input)

branch2_input = Input(shape=(500,))
branch2_out = branch2(branch2_input)

# Combine
x = concatenate([branch1_out, branch2_out])
out = Dense(1)(x)

# Create model
model = Model(inputs=[branch1_input, branch2_input], outputs=out)

layer = model.get_layer('sequential_1').get_layer('dense_2')
grads = K.gradients(model.output, layer.output)

print(grads) # prints out [None]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...