打印出网络架构中每层的形状

时间:2016-11-22 04:51:18

标签: tensorflow deep-learning theano keras

在Keras,我们可以按如下方式定义网络。有没有办法在每一层后输出形状。例如,我想在定义inputs的行之后打印出inputs的形状,然后在定义conv1的行之后打印出conv1的形状等。< / p>

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)

3 个答案:

答案 0 :(得分:9)

只需使用model.summary()即可获得精美的印刷效果。

答案 1 :(得分: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

答案 2 :(得分: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)

打印:(无,1,224,224)#Nr。过滤器,渠道,x_dim,y_dim