2016-11-22 4 views
2

В Keras мы можем определить сеть следующим образом. Есть ли способ вывести форму после каждого слоя. Например, я хочу, чтобы распечатать форму inputs после строки, определяющей inputs, а затем распечатать форму conv1 после строки, определяющей conv1 и т.д.распечатать форму каждого слоя в сетевой архитектуре

inputs = Input((1, img_rows, img_cols)) 
conv1 = Convolution2D(64, 3, 3, activation='relu', init='lecun_uniform', W_constraint=maxnorm(3), border_mode='same')(inputs) 
conv1 = Convolution2D(64, 3, 3, activation='relu', init='lecun_uniform', W_constraint=maxnorm(3), border_mode='same')(conv1) 
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) 

conv2 = Convolution2D(128, 3, 3, activation='relu', init='lecun_uniform', W_constraint=maxnorm(3), border_mode='same')(pool1) 
conv2 = Convolution2D(128, 3, 3, activation='relu', init='lecun_uniform', W_constraint=maxnorm(3), border_mode='same')(conv2) 
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2) 

ответ

0

Если слой имеет один узел (то есть, если это не общий слой), вы можете получить ее тензор входного, тензор выходного, входную и выходную форму форму с помощью: layer.input_shape

from keras.utils.layer_utils import layer_from_config 

config = layer.get_config() 
layer = layer_from_config(config) 

Источника: https://keras.io/layers/about-keras-layers/

может быть, это самый простой способ сделать:

model.layers[layer_of_interest_index].output_shape 
+0

Можете ли вы подробнее рассказать о том, как его использовать? Например, я хотел бы распечатать информацию о пуле1. Я попробовал config = pool1.get_config(), это не сработало. – user288609

+0

отредактировал ответ. пожалуйста, проверьте –

5

Только с помощью model.summary(), который дает довольно печать.

0

для печати полной модели и все его зависимости вы можете посмотреть здесь: https://keras.io/visualization/

Я использовал эту команду, чтобы сохранить свою модель визуализации, как PNG:

from keras.utils.visualize_util import plot 
plot(model, to_file='model.png') 

Если вы хотите, чтобы распечатать форму слоя вы можете сделать что-то вроде этого:

layer = model.layers[-1] 
print(layer.output._keras_shape) 

распечаток: (None, 1, 224, 224) # Nr. Фильтры, Каналы, x_dim, y_dim

+0

Спасибо. Если я хочу только распечатать определенный слой, т. Е. Pool1, как это сделать? – user288609

+0

Самый простой способ - назвать слой, а затем найти его с помощью model.get_layer ('pool1'). –

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