Python Keras:如何在顺序模型中获得图层形状

Python Keras:如何在顺序模型中获得图层形状,python,tensorflow,deep-learning,keras,theano,Python,Tensorflow,Deep Learning,Keras,Theano,我想访问SequentialKeras模型中所有层的层大小。我的代码: model = Sequential() model.add(Conv2D(filters=32, kernel_size=(3,3), input_shape=(64,64,3) )) model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2))) 然后,我希望下面的代码能够正常工作 for l

我想访问
Sequential
Keras模型中所有层的层大小。我的代码:

model = Sequential()
model.add(Conv2D(filters=32, 
               kernel_size=(3,3), 
               input_shape=(64,64,3)
        ))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2)))
然后,我希望下面的代码能够正常工作

for layer in model.layers:
    print(layer.get_shape())

。。但事实并非如此。我得到错误:
AttributeError:'Conv2D'对象没有属性“get_shape”

只需使用
model.summary()
,它将打印所有层及其输出形状


如果需要它们作为数组、元组等,可以尝试:

for l in model.layers:
    print (l.output_shape)

对于多次使用的图层,它们包含“多个入站节点”,您应该分别获得每个输出形状:

if isinstance(layer.outputs, list):
    for out in layer.outputs:
        print(K.int_shape(out))

        for out in layer.outputs:

对于第一层,它将以(无、62、62、32)的形式出现。
None
与批次大小相关,将在培训或预测期间定义

如果希望以奇特的方式打印输出:

model.summary()
如果您希望以可访问的形式显示尺寸

for layer in model.layers:
    print(layer.get_output_at(0).get_shape().as_list())

可能有更好的方法来访问这些形状。感谢Daniel的灵感。

根据的官方文档,可以通过
layer.output\u shape
layer.input\u shape
访问层输出/输入形状

从keras.models导入
从keras.layers导入Conv2D、MaxPool2D
模型=顺序(层)=[
Conv2D(32,(3,3),输入_形状=(64,64,3)),
MaxPool2D(池大小=(3,3),跨步=(2,2))
])
对于model.layers中的图层:
打印(图层输出形状)
#输出
#(无、62、62、32)
#(无、30、30、32)

model.summary()
在许多情况下都是一个不错的选择,但理想情况下,我希望将形状作为数组或tensorI(通过更新)得到以下错误:
AttributeError:layer“max\u Poolig2D\u 1有多个入站节点,具有不同的输出形状。因此,有了“输出形状”的概念“对于该层的定义不正确。使用“get_output_shape_at(node_index)”。
我认为您必须完成全部工作,正如在我的回答中一样,您可以
K.int_shape(layer.get_output_at(node_index))
,但您需要在许多索引处获得输出“AttributeError:该层从未被调用,因此没有定义的输出形状”@Adrian确保正确定义第一层的
inpute\u形状
。您可以先调用
model.build()
来检查这一点。