Keras:如何在顺序模型中获取图层形状
Keras: How to get layer shapes in a Sequential model
我想访问 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'
只需使用 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))
第一层将以 (None, 62, 62, 32) 形式出现。 None
与 batch_size 相关,将在训练或预测期间定义。
如果你想以一种奇特的方式打印输出:
model.summary()
如果您希望尺码采用易于访问的形式
for layer in model.layers:
print(layer.get_output_at(0).get_shape().as_list())
可能有比这更好的访问形状的方法。感谢 Daniel 的启发。
根据 Keras Layer 的官方文档,可以通过 layer.output_shape
或 layer.input_shape
.
访问层 output/input 形状
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)
我想访问 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'
只需使用 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))
第一层将以 (None, 62, 62, 32) 形式出现。 None
与 batch_size 相关,将在训练或预测期间定义。
如果你想以一种奇特的方式打印输出:
model.summary()
如果您希望尺码采用易于访问的形式
for layer in model.layers:
print(layer.get_output_at(0).get_shape().as_list())
可能有比这更好的访问形状的方法。感谢 Daniel 的启发。
根据 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)