我想访问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' object has no attribute 'get_shape'
答案 0 :(得分:25)
如果您希望以奇特的方式打印输出:
model.summary()
如果您希望以可访问的形式显示尺寸
for layer in model.layers:
print(layer.get_output_at(0).get_shape().as_list())
访问形状的方法可能比这更好。感谢Daniel的灵感。
答案 1 :(得分:10)
只需使用model.summary()
,它就会打印出所有图层的输出形状。
如果您需要它们作为数组,元组等,您可以尝试:
for l in model.layers:
print (l.output_shape)
它将作为第一层的(无,62,62,32)。 None
与batch_size相关,将在训练或预测期间定义。
答案 2 :(得分:5)
根据Keras Layer的官方文档,人们可以通过layer.output_shape
或layer.input_shape
访问图层的输出/输入形状。
from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D
model = Sequential(layers=[
Conv2D(32, (3, 3), input_shape=(64, 64, 3)),
MaxPool2D(pool_size=(3, 3), strides=(2, 2))
])
for layer in model.layers:
print(layer.output_shape)
# Output
# (None, 62, 62, 32)
# (None, 30, 30, 32)