[英]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 layer in model.layers:
print(layer.get_output_at(0).get_shape().as_list())
可能有比這更好的訪問形狀的方法。 感謝丹尼爾的靈感。
根據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)
只需使用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 相關,將在訓練或預測期間定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.