Получите выходные данные промежуточных слоев в керасе. - PullRequest
0 голосов
/ 24 февраля 2019

Я хочу визуализировать слои в капсульных сетях.Для этого мне нужна форма промежуточных слоев.Код выглядит следующим образом:

from keras.models import Model
model = Sequential()
conv1 = model.add(Conv2D(256, (9, 9), padding='valid', strides = 1, input_shape = (28, 28, 1), activation = 'relu', name = 'conv1'))
model.add(Conv2D(256, (9,9), padding='valid', strides = 2, name = 'primarycaps_conv2d'))
model.add(keras.layers.core.Reshape([-1,8]))
model.add(keras.layers.core.Lambda(squash, name = 'hello'))

layer_name = 'conv1'
intermediate_layer_model = Model(inputs=model.input,
                             outputs=model.get_layer(layer_name).output)
intermediate_output = intermediate_layer_model.predict(data)

Выдает следующую ошибку:

NameError: name 'data' is not defined

Как это побороть?

1 Ответ

0 голосов
/ 24 февраля 2019

Ссылаясь на это , я получил решение следующим образом:

model = Sequential()
conv1 = model.add(Conv2D(256, (9, 9), padding='valid', strides = 1, input_shape = (28, 28, 1), activation = 'relu', name = 'conv1'))
model.add(Conv2D(256, (9,9), padding='valid', strides = 2, name = 'primarycaps_conv2d'))
model.add(keras.layers.core.Reshape([-1,8]))
model.add(keras.layers.core.Lambda(squash, name = 'hello'))

idx = 3  # index of desired layer
input_shape = model.layers[idx].get_output_shape_at(0)
print(input_shape)

получить форму вывода следующим образом:

(None, 1152, 8).

Проблема получения определенного слоявывод решен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...